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的个数。
相关推荐
阿里云E-MapReduce-常见问题指南-D.docx
Hadoop MapReduce作业卡死问题的解决方法.docx
基本概念 MapReduce采用了Master/Slave架构,包括一个Master和若干个Slave,Master上运行JobTracker,Slave运行TaskTracker ...3.将运行作业所需要的资源文件复制到HDFS上,包括MapReduce程序打包的JAR文件、
阿里云E-MapReduce-常见问题指南.pdf
用MapReduce解决下面的问题,只是出个题而已
mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce mapreduce ...
基于MapReduce作业拆分组合机制的并行ETL组件实现.pdf基于MapReduce作业拆分组合机制的并行ETL组件实现.pdf基于MapReduce作业拆分组合机制的并行ETL组件实现.pdf基于MapReduce作业拆分组合机制的并行ETL组件实现.pdf...
mrjob:在 Hadoop 或Amazon Web Services上运行MapReduce 作业
利用采样器实现mapreduce任务输出全排序大数据-MapReduce
MapReduce集群多用户作业调度方法的研究与实现
MapReduce经典常见面试实操题,面试题,实操题,练习题,练手题
4 分别在自编 MapReduce 程序 WordCount 运行过程中和运行结束后查看 MapReduce Web 界面。 5. 分别在自编 MapReduce 程序 WordCount 运行过程中和运行结束后练习 MapReduce Shell 常用命令。 。。
用于多个MapReduce作业的任务调度算法.pdf
在hadoop平台上,用mapreduce编程实现大数据的词频统计
MapReduce发明人关于MapReduce的介绍
MapReduce在Windows环境下所需要的hadoop(bin目录),内含winutils 支持MapReduce和Spark的windos环境
YARN中运行Mapreduce程序 ...6 、 MapReduce作业的application master是一个Java应用程序,它的主类是MRAppMaster。它对作业进行初始化:通过创建多个簿记对象以保持对作业进度的跟踪,因为它将接受
(2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行命令 (1):把linus下的文件放到hdfs上 (2):运行MapReduce (5):查看运行结果 ...
四川大学IT企业实训,拓思爱诺大数据第二次作业,MapReduce编程,包括Hadoop wordcount程序,及flowcount流量统计程序,包括重写排序及分区函数