`
yu06206
  • 浏览: 110850 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

MapReduce提交作业常见问题

阅读更多

 今天在hadoop集群上跑MapReduce程序,遇到的一些问题和解决的方法,希望对大家有帮助!
1.从HDFS上传下载文件到
第一种错误:

Exception inthread"main"java.lang.IllegalArgumentException: 

Wrong FS: hdfs://192.168.1.11:9000/usr/yujing/wordcount, 

expected: hdfs://master:9000

 
这个很多人都遇到过,不管是在ubuntu还是windows系统中,在连接集群的时候,不能直接使用hdfs://192.168.1.11:9000,要在hosts文件中添加192.168.1.11的映射,有人可能不知道windows下hosts文件在哪?C:\Windows\System32\drivers\etc\hosts(这个是隐藏文件你可以显示出来),在host文件中添加192.168.1.11 master就可以了。
第二种错误:

org.apache.hadoop.ipc.RemoteException: 

org.apache.hadoop.hdfs.server.namenode.SafeModeException: 

Cannot create file/usr/yujing/wordcount. Name node is in 

safe mode.
The ratio of reported blocks 0.0000 has not reached the 

threshold 0.9990. Safe mode will be turned off 

automatically.

 
这个错误出现的原因是client对集群中HDFS的操作没有权限
解决办法:
(1)在代码中加上一行代码
conf.set("dfs.permissions","false");
(2)在集群配置文件hdfs-site.xml
property>
     <name>dfs.permissions</name>
    <value>false</value>
</property>
然后重启
1.对于hadoop提供的wordcount例子
第一种错误:

 

12/02/10 14:24:59 INFO ipc.Client: Retrying connect to 

server: localhost/127.0.0.1:9000. Already tried 0 time(s).
12/02/10 14:25:01 INFO ipc.Client: Retrying connect to  

 
当你在代码中明明写的是集群的IP,但是它连接就是localhost,这是因为mapreduce默认连接的是localhost
解决办法:
conf.set("fs.default.name", "hdfs://master:9000");
conf.set("hadoop.job.user", "yujing");
conf.set("mapred.job.tracker", "master:9001");
这样JobClient就会把Job任务提交到hadoop集群中
第二种错误:

Exception in thread "main" 

org.apache.hadoop.mapreduce.lib.input.InvalidInputException

: Input path does not exist: 

hdfs://master:9000/user/yujing/D:/qq.txt

 
这种错误是因为向集群中提交job任务是文件的输入路径必须要是HDFS上的文件路径,输出路径也要是HDFS上的文件
第三种错误:

2/02/10 14:52:36 WARN mapred.JobClient: No job jar file 

set.  User classes may not be found. See JobConf(Class) or 

JobConf#setJar(String).
12/02/10 14:52:36 INFO mapred.JobClient: Cleaning up the 

staging area hdfs://master:9000/tmp/hadoop-

hadoop/mapred/staging/yujing/.staging/job_201202091335_0293

 
以上的错误是由于mapreduce的输出路径已存在,必须先删除掉那个文件
正确的运行结果:

12/02/10 14:59:35 INFO input.FileInputFormat: Total input 

paths to process : 1
12/02/10 14:59:35 INFO mapred.JobClient: Running job: 

job_201202091335_0299
12/02/10 14:59:36 INFO mapred.JobClient:  map 0% reduce 0%
12/02/10 14:59:48 INFO mapred.JobClient:  map 100% reduce 

0%
12/02/10 15:00:04 INFO mapred.JobClient:  map 100% reduce 

100%
12/02/10 15:00:09 INFO mapred.JobClient: Job complete: 

job_201202091335_0299
12/02/10 15:00:09 INFO mapred.JobClient: Counters: 25

 
2.自己写的mapReduce程序
第一种错误:

java.lang.RuntimeException: 

java.lang.ClassNotFoundException: cn.hadoop.InvertedIndex

$InvertedIndexMapper
	at org.apache.hadoop.conf.Configuration.getClass

(Configuration.java:866)
	at 

org.apache.hadoop.mapreduce.JobContext.getMapperClass

(JobContext.java:195)

 
第一种解决方法:
这是由于及集群中没有我们提交的jar包,所以namenode不知道怎么执行我们的job任务,所以就会报空指针异常错误,所以要自己打jar提交给集群。
解决方法: 所以先给自己的程序打成jar包,然后放到工程的根目录下,然后在代码中添加JobConf conf=new JobConf
();conf.setJar("pr.jar");这样就可以了,这个错误困扰了我们很久。
第二种解决方法:
使用eclipse插件解决,有很多人刚刚开始的时候使用插件老是会出不来想要的结果,这个可能和eclipse或者是插件包的版本有关,有的版本的eclipse不兼容hadoop插件,还有就是hadoop-eclipse-plugin-0.20.203.0.jar的插件里面少了一些包,要自己进行手动修改,这个网上又怎么修改的方法,关于在eclipse安装插件就是要多试试就可以了,当插件完成后,然后点击run hadoop,插件内部会打包你的程序提交到集群上。


第三种解决方法:
自己在程序中打包自己的mapreduce程序,然后提交job任务,这方面这部分代码在eclipse插件中也是实现了的,我们这里就是要用代码实现插件的功能。
第二种错误:

2/02/10 14:59:35 INFO input.FileInputFormat: Total input 

paths to process : 1
12/02/10 14:59:35 INFO mapred.JobClient: Running job: 

job_201202091335_0299
12/02/10 14:59:36 INFO mapred.JobClient:  map 0% reduce 0%
12/02/10 14:59:48 INFO mapred.JobClient:  map 100% reduce 

0%

 
这种错误出现的原因是mapreduce默认的reduce个数是1个,所以如果当map的个数很大时,reduce过程迟迟不会进行,解决方法是在代码中添加job.setNumReduceTasks(4);设置reduced的个数。

 

 

  • 大小: 71.5 KB
分享到:
评论
4 楼 chenglnb 2013-08-19  
非常好,很强大,谢谢lz 帮解决了我的问题
3 楼 Karl-z 2013-04-09  
在ClassNotFoundExceptiond第二个解决办法失效
第三个办法的:
自己在程序中打包自己的mapreduce程序,然后提交job任务,这方面这部分代码在eclipse插件中也是实现了的,我们这里就是要用代码实现插件的功能。
这个怎么实现?没找到,谢谢!
2 楼 yu06206 2012-03-14  
呵呵,都学习过程中遇到的一些问题!
1 楼 chenwq 2012-03-13  
总结得很好,学习了!

相关推荐

    阿里云E-MapReduce-常见问题指南-D.docx

    阿里云E-MapReduce常见问题指南 阿里云E-MapReduce是基于Hadoop的数据处理服务,提供了大规模数据处理和分析的能力。本资源摘要信息将对阿里云E-MapReduce的常见问题进行总结,涵盖了作业和执行计划的区别、作业...

    实验项目 MapReduce 编程

    完成后,将程序打包成JAR文件,上传至Hadoop集群,并提交作业运行。运行结果可以通过Hadoop的Web界面查看,这有助于理解MapReduce的工作流程。 在MapReduce Web界面上,可以监控作业的进度、任务分布以及资源使用...

    大数据 hadoop mapreduce 词频统计

    4. **运行Job**:配置好MapReduce作业后,提交到Hadoop集群进行执行。集群会自动调度任务,将工作分配给各个节点。 5. **结果收集**:MapReduce完成后,最终的词频统计结果会被写入HDFS,可以进一步进行可视化或...

    第一个Mapreduce程序.pdf

    文中没有详细说明如何运行作业,但在Hadoop MapReduce中,一般通过Hadoop命令行工具来提交作业,命令通常类似于“hadoop jar wc3.jar”。 整个过程大致如下: 1. 搭建Hadoop环境(以CDH5为基础)。 2. 编写或获取...

    MapReduce经典常见面试实操题

    - 使用Hadoop的`hadoop jar`命令提交作业,指定自定义的MapReduce类路径和其他相关参数。 6. **期望输出**: - 根据题目提供的示例,期望输出应如下所示: ``` 1 2 2 22 3 32 ... 10 9210 11 65011 12 ...

    大数据小型项目源码之mapreduce英语单词频次统计

    同时,项目中可能包含一个主程序,用于提交MapReduce作业到Hadoop集群。 6. **输入与输出格式**: MapReduce作业通常接收HDFS上的文本文件作为输入,而输出也是键值对形式的文本文件。在这个项目中,输入可能是...

    17_尚硅谷大数据之MapReduce框架原理1

    - **Job 提交流程**:客户端首先通过`Job`类提交作业,`waitForCompletion()`方法启动作业并等待其完成。`submit()`方法建立与JobTracker的连接,创建Job的代理,提交作业配置和输入数据信息。 - **切片机制**:`...

    Hadoop_MapReduce教程

    - **JobTracker (Master)**:负责接收来自客户端的作业提交请求,将作业分解为多个任务,并分配给TaskTracker执行。 - **TaskTracker (Slave)**:运行在集群中的每个节点上,负责执行由JobTracker分配的任务。 **...

    阿里云 专有云企业版 V3.12.0 E-MapReduce 开发指南 20200609.pdf

    9. **故障排查与优化**:提供了常见问题的解决方法和性能优化建议,帮助用户提高E-MapReduce集群的稳定性和效率。 10. **最佳实践**:分享了一些成功案例和经验,帮助用户更好地应用E-MapReduce解决实际业务问题。 ...

    MapReduce.pdf

    根据提供的文件信息,以下是对MapReduce程序编写相关知识点的详细介绍: ...掌握了以上知识点后,就能够更好地进行基于Maven和Java的MapReduce程序编写,并且能够解决实际开发中遇到的一些常见问题。

    3大数据技术之Hadoop(MapReduce).doc

    - 单机处理海量数据受限于硬件性能,MapReduce通过分布式计算解决了这个问题。 - MapReduce简化了分布式编程的复杂性,开发者只需关注业务逻辑,而框架处理数据分片、任务调度、容错和监控等底层细节。 - ...

    精选_大数据Hadoop平台2-2、MapReduce_源码打包

    6. **WordCount示例**:WordCount是最常见的MapReduce示例,用于统计文本文件中每个单词出现的次数。Map阶段解析输入文本,生成键值对(单词,1),而Reduce阶段则将相同的键(单词)的所有值(出现次数)相加,得到...

    Hadoop.MapReduce.分析

    1. **输入**: 用户提交作业(Job)至JobTracker。 2. **分解**: JobTracker将Job分解为多个MapTask和ReduceTask。 3. **调度**: JobTracker根据可用资源在集群中调度这些任务。 4. **执行**: Task执行过程中,会定期向...

    阿里云 专有云企业版 V3.7.0 E-MapReduce 开发指南 20190320.pdf

    7. **故障排查与维护**:指南可能包含常见问题的解决方案,以及如何进行集群的日常维护和优化。 8. **API与SDK使用**:E-MapReduce提供了丰富的API和SDK,使得自动化管理和操作成为可能。这部分内容可能涵盖如何...

    阿里云 专有云企业版 V3.12.0 E-MapReduce 运维指南 20200619.pdf

    - 提供常见问题的解决方法,如节点异常、服务宕机等。 - 讲解如何备份数据,以及在需要时如何恢复。 9. **最佳实践**: - 根据实际场景提供优化建议,如硬件配置、作业参数调优等。 以上内容是基于E-MapReduce...

    Yarn常见问题维护手册V1.01

    **YARN 常见问题** 1. **任务提交异常** - `[YARN-10001]` 在 Windows 环境下提交 MR 任务失败:这通常与环境变量配置不正确、Hadoop 客户端与服务器版本不匹配或权限问题有关。确保所有依赖项已正确安装,配置...

    阿里云 专有云企业版 V3.6.1 E-MapReduce 开发指南 - 20190326.pdf

    - 操作流程:通常会详细介绍如何提交MapReduce任务、Spark作业,以及如何管理集群资源。 - 性能优化:可能包括参数调优、资源分配策略等,以提升处理效率。 - 故障排查和维护:提供常见问题的解决办法,以及日常...

    阿里云 专有云Enterprise版 V3.5.0 E-MapReduce 开发指南 - 20190327.pdf

    3. **使用教程**:提供具体的使用案例和操作指南,如提交MapReduce作业、Spark任务,以及数据导入导出等。 4. **API与SDK**:详细阐述如何利用API和SDK进行程序开发,以便集成到企业的数据处理流程中。 5. **监控与...

    Windows上向集群提交任务.docx

    在Windows环境下向Hadoop集群提交MapReduce任务是大数据处理中常见的操作,这涉及到对Hadoop生态系统的理解,尤其是MapReduce框架和YARN资源调度器。本文将详细解析如何在Windows系统上配置和提交MapReduce作业。 ...

Global site tag (gtag.js) - Google Analytics