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,插件内部会打包你的程序提交到集群上。
![](http://dl.iteye.com/upload/attachment/0062/9968/a4679a4c-f591-3916-9709-856e285bbb83.jpg)
第三种解决方法:
自己在程序中打包自己的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的个数。
相关推荐
阿里云E-MapReduce常见问题指南 阿里云E-MapReduce是基于Hadoop的数据处理服务,提供了大规模数据处理和分析的能力。本资源摘要信息将对阿里云E-MapReduce的常见问题进行总结,涵盖了作业和执行计划的区别、作业...
完成后,将程序打包成JAR文件,上传至Hadoop集群,并提交作业运行。运行结果可以通过Hadoop的Web界面查看,这有助于理解MapReduce的工作流程。 在MapReduce Web界面上,可以监控作业的进度、任务分布以及资源使用...
文中没有详细说明如何运行作业,但在Hadoop MapReduce中,一般通过Hadoop命令行工具来提交作业,命令通常类似于“hadoop jar wc3.jar”。 整个过程大致如下: 1. 搭建Hadoop环境(以CDH5为基础)。 2. 编写或获取...
4. **运行Job**:配置好MapReduce作业后,提交到Hadoop集群进行执行。集群会自动调度任务,将工作分配给各个节点。 5. **结果收集**:MapReduce完成后,最终的词频统计结果会被写入HDFS,可以进一步进行可视化或...
- 使用Hadoop的`hadoop jar`命令提交作业,指定自定义的MapReduce类路径和其他相关参数。 6. **期望输出**: - 根据题目提供的示例,期望输出应如下所示: ``` 1 2 2 22 3 32 ... 10 9210 11 65011 12 ...
- **Job 提交流程**:客户端首先通过`Job`类提交作业,`waitForCompletion()`方法启动作业并等待其完成。`submit()`方法建立与JobTracker的连接,创建Job的代理,提交作业配置和输入数据信息。 - **切片机制**:`...
- **JobTracker (Master)**:负责接收来自客户端的作业提交请求,将作业分解为多个任务,并分配给TaskTracker执行。 - **TaskTracker (Slave)**:运行在集群中的每个节点上,负责执行由JobTracker分配的任务。 **...
9. **故障排查与优化**:提供了常见问题的解决方法和性能优化建议,帮助用户提高E-MapReduce集群的稳定性和效率。 10. **最佳实践**:分享了一些成功案例和经验,帮助用户更好地应用E-MapReduce解决实际业务问题。 ...
根据提供的文件信息,以下是对MapReduce程序编写相关知识点的详细介绍: ...掌握了以上知识点后,就能够更好地进行基于Maven和Java的MapReduce程序编写,并且能够解决实际开发中遇到的一些常见问题。
1. **输入**: 用户提交作业(Job)至JobTracker。 2. **分解**: JobTracker将Job分解为多个MapTask和ReduceTask。 3. **调度**: JobTracker根据可用资源在集群中调度这些任务。 4. **执行**: Task执行过程中,会定期向...
- 单机处理海量数据受限于硬件性能,MapReduce通过分布式计算解决了这个问题。 - MapReduce简化了分布式编程的复杂性,开发者只需关注业务逻辑,而框架处理数据分片、任务调度、容错和监控等底层细节。 - ...
6. **WordCount示例**:WordCount是最常见的MapReduce示例,用于统计文本文件中每个单词出现的次数。Map阶段解析输入文本,生成键值对(单词,1),而Reduce阶段则将相同的键(单词)的所有值(出现次数)相加,得到...
在数据处理方面,指南提供了如何利用E-MapReduce处理大规模数据集的操作指导,涵盖了数据的上传、作业提交、结果分析等关键环节。在机器学习领域,指南为开发者提供了利用E-MapReduce构建机器学习模型的完整流程,...
7. **故障排查与维护**:指南可能包含常见问题的解决方案,以及如何进行集群的日常维护和优化。 8. **API与SDK使用**:E-MapReduce提供了丰富的API和SDK,使得自动化管理和操作成为可能。这部分内容可能涵盖如何...
- 提供常见问题的解决方法,如节点异常、服务宕机等。 - 讲解如何备份数据,以及在需要时如何恢复。 9. **最佳实践**: - 根据实际场景提供优化建议,如硬件配置、作业参数调优等。 以上内容是基于E-MapReduce...
**YARN 常见问题** 1. **任务提交异常** - `[YARN-10001]` 在 Windows 环境下提交 MR 任务失败:这通常与环境变量配置不正确、Hadoop 客户端与服务器版本不匹配或权限问题有关。确保所有依赖项已正确安装,配置...
- 操作流程:通常会详细介绍如何提交MapReduce任务、Spark作业,以及如何管理集群资源。 - 性能优化:可能包括参数调优、资源分配策略等,以提升处理效率。 - 故障排查和维护:提供常见问题的解决办法,以及日常...
3. **使用教程**:提供具体的使用案例和操作指南,如提交MapReduce作业、Spark任务,以及数据导入导出等。 4. **API与SDK**:详细阐述如何利用API和SDK进行程序开发,以便集成到企业的数据处理流程中。 5. **监控与...
在Windows环境下向Hadoop集群提交MapReduce任务是大数据处理中常见的操作,这涉及到对Hadoop生态系统的理解,尤其是MapReduce框架和YARN资源调度器。本文将详细解析如何在Windows系统上配置和提交MapReduce作业。 ...