hadoop下跑mapreduce程序报错
mapreduce真的是门学问,遇到的问题逼着我把它从MRv1摸索到MRv2,从年前就牵挂在心里,连过年回家的旅途上都是心情凝重,今天终于在eclipse控制台看到了job completed successfully,当时的兴奋难以形容,都有些不敢相信自己的眼睛,压抑住激动的心情再试了一遍,特么真的跑通了,喜极而泣。
总结起来就是两处
1.报错Class not found 或者 No job jar file set
这是由于及集群中没有我们提交的jar包,所以namenode不知道怎么执行我们的job任务,所以就会报空指针异常错误,所以要自己打jar提交给集群。
解决方法: 所以先给自己的mapreduce程序打成jar包,然后放到工程的根目录下,然后在代码中添加JobConf conf=new JobConf();conf.setJar("hope.jar");这样就可以了。
引用参考资料4里面的解释:
虽然网上各种说是job.setJarByClass("WordCount.class")既可以解决,但实际上job.setJarByClass(WordCountTest.class)这个语句设置作业Jar包并没有成功。这是为什么呢?因为这个方法使用了WordCount.class的类加载器来寻找包含该类的Jar包,然后设置该Jar包为作业所用的Jar包。但是我们的作业 Jar包是在程序运行时才打包的,而WordCount.class的类加载器是AppClassLoader,运行后我们无法改变它的搜索路径,所以使用setJarByClass是无法设置作业Jar包的。我们必须使用JobConf里的setJar来直接设置作业Jar包。
2.cannot init cluster,无法启动集群
由于我们环境用的是CDH4.5.0所以包含了MRv1和MRv2,而我程序用的是MRv2的写法,MRv2引入Resource Manager就没有了job tracker的概念,所以在mapred-site.xml的文件里把如下配置注释掉
<property>
<name>mapred.job.tracker</name>
<value>master:8021</value>
</property>
<property>
<name>mapred.job.tracker.http.address</name>
<value>0.0.0.0:50030</value>
</property>
如果你的程序没有问题,基本你就要从MRv1和MRv2的区别上入手去解决问题了,由于本人技术水平有限,还是个菜鸟,虽然二者的区别,理论我学习了很多,可是实际中eclipse一跑起来,我还真不知道到底能从哪里看出来当前跑的环境是1还是2。本人程序是继承新接口的MRv2,所以在mapred-site.xml的文件里添加如下配置
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
设置mapreduce程序跑在Yarn上。
此时不仅Mapreduce程序能跑,sqoop程序也能跑了,欢喜之至。
sqoop程序当时报错,cannot init cluster
如果你也遇到这样的问题,请查看你的mapreduce跑的框架配置。
3.上面搞完了之后mapreduce倒是能跑了,但是之前好好的hive不能跑了,shell下hive语句都还能正常执行,但是java程序里面的hive调用就不能跑了。
修改hive/conf下hive-site.xml文件,在底部添加如下内容:
<property>
<name>hive.aux.jars.path</name><value>file:///opt/cloudera/parcels/CDH/lib/hive/lib/hive-hbase-handler-0.10.0-cdh4.5.0.jar,file:///opt/cloudera/parcels/CDH/lib/hbase/hbase-0.94.6-cdh4.5.0-security.jar,file:///opt/cloudera/parcels/CDH/lib/zookeeper/zookeeper-3.4.5-cdh4.5.0.jar</value>
</property>
此处切记, <value> </value>中间的内容一定不能加换行或者空格,就因为犯此弱智问题,在<value>后,</value>前手欠加了换行,就报找不到jar包的问题,还以为我把hive环境搞坏了,害我苦苦查找了两天。
参考资料:
1. 新旧hadoop MapReduce实例解析 http://blog.csdn.net/liuxiaochen123/article/details/8786715
2. ClassNotFoundException: Job$Mapper问题及解决 http://hi.baidu.com/yangls06/item/a17251b6a447d77f244b0928
3. MapReduce提交作业常见问题 http://yu06206.iteye.com/blog/1402084
4. Hadoop作业提交分析(五)http://www.cnblogs.com/spork/archive/2010/04/21/1717592.html
hadoop下跑mapreduce程序报错的更多相关文章
- eclipse下执行maprdeuc程序报错 java.lang.ClassNotFoundException
最近遇到一个问题,不知怎么突然运行hadoop的map程序报错,困扰了我很久,现在来给大家分享分享.. 错误信息 2017-05-18 21:34:22,104 INFO [main] client. ...
- Window7中Eclipse运行MapReduce程序报错的问题
按照文档:http://www.micmiu.com/bigdata/hadoop/hadoop2x-eclipse-mapreduce-demo/安装配置好Eclipse后,运行WordCount程 ...
- eclipse 运行 mapreduce程序报错 No job jar file set. User classes may not be found. See JobConf(Class) or JobConf#setJar(String).
报错信息 17/07/06 17:00:27 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Ap ...
- Linux下执行Java程序报错
在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java 会提示未找到指令,但用java -verison测试环境变量 ...
- bat下执行java程序报错处理
G:\>java -Xms128M -Xmx512M -server -Dprogram.name=b omc-sa-tdtpagent -Dfile.encoding=GBK -Duser.t ...
- windows下Eclipse操作MapReduce例子报错:Failed to set permissions of path: \tmp\hadoop-Jerome\mapred\staging\
windows下Eclipse操作MapReduce例子报错: 14/05/18 22:05:29 WARN util.NativeCodeLoader: Unable to load native- ...
- eclipse运行hadoop程序报错:Connection refused: no further information
eclipse运行hadoop程序报错:Connection refused: no further information log4j:WARN No appenders could be foun ...
- 运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory
运行编译后的程序报错 error while loading shared libraries: lib*.so: cannot open shared object file: No such f ...
- [MapReduce_add_1] Windows 下开发 MapReduce 程序部署到集群
0. 说明 Windows 下开发 MapReduce 程序部署到集群 1. 前提 在本地开发的时候保证 resource 中包含以下配置文件,从集群的配置文件中拷贝 在 resource 中新建 ...
随机推荐
- Dia Diagram Mac OSX Yosemite Fix 闪退 xterm
[转]http://navkirats.blogspot.hk/2014/10/dia-diagram-mac-osx-yosemite-fix-i-use.html I use the Dia to ...
- java_Oralce
简单范例 create or replace procedure delete_table is i number(10); begin for x in (select * from emp whe ...
- Linux命令之hwclock
转载:http://codingstandards.iteye.com/blog/804830 用途说明 hwclock命令,与clock命令是同一个命令,主要用来查询和设置硬件时钟(query an ...
- eclipse按Crl+鼠标左键,找不到源文件的解决办法。
这种情况一般发生在tomcat的之中,原因是缺少类的源文件.在jdk中很少见,jdk中自带类的源文件,配置jdk的时候就已经将其加载进来了.而tomcat之中没有带类的源文件,需要自己去网上单独下载. ...
- JPA注释,内嵌数据对象
@Data @Embeddable @NoArgsConstructor @AllArgsConstructor @JsonNaming(value = LowerCaseWithUnderscore ...
- javaweb学习总结二十(http响应)
一:http响应 1:http响应的组成部分 状态行.响应头.空行.响应数据 2:状态行 常用状态码: 200:请求成功 302:请求路径已经转移,请访问别的地址 307或者304: 请访问缓存信息 ...
- javaweb学习总结三(枚举)
一:枚举的概念 定义特定的数据,尤其像一些状态位. 二:定义枚举类 1:定义枚举,其中Grade枚举可以看做类,A.B.C.D.E可以看做对象,因为它定义了有参数的构造方法,所以 对象后面必须带参数. ...
- linux安装gcc的一些问题。
输入命令:yum install gcc 提示: Loaded plugins: fastestmirror, langpacksExisting lock /var/run/yum.pid: ano ...
- mysql导入数据load data infile用法
mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...
- 在CentOS6.4中安装配置LAMP环境的详细步骤
本文详细介绍了CentOS6.4系统中安装LAMP服务并对其进行配置的过程,即安装Apache+PHP+Mysql,参照了网上大神的设置,其他Linux发行系统可以参考~ 在本文中部分命令操作需要ro ...