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 中新建 ...
随机推荐
- iOS开发——网络编程Swift篇&(一)网络监测
网络监测 enum ReachabilityType { case WWAN, WiFi, NotConnected } public class Reachability { /** :see: O ...
- SiteMesh学习笔记
SiteMesh是一个轻量级的web应用框架,实现了Decorator模式.它的目标是将多个页面都将引用的jsp页面通过配置加载到相应的jsp文件中. 在我们的项目中,每个jsp都需要添加两个top和 ...
- 使用maven命令建立java项目
在terminal中输入: mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -Darc ...
- Masonry+Infinite-Scroll实现无刷新无分页完美瀑布流(转)
一.Masonry 是基于Jquery插件,用于对CSS布局的可移动层进行重新布局.Masonry愿意石工,可以这样形象的理解,页面上很多大小不一的移动层可以想象成散乱的石头,经过Masonry这个石 ...
- starling 笔记
------------------------------------------------------------------ 这里的舞台是flash原生舞台,不是starling舞台 // r ...
- apache配置文件
httpd-vhost.conf文件中: <VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com Do ...
- Explain的type, where 和 order by 组合是索引的选择
Explain的type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是: system > const > eq_ref > ref > fulltext > ...
- Codec工具类
import java.math.BigInteger; import org.apache.commons.codec.DecoderException; import org.apache.com ...
- css3 伪对象选择器添加几何图形文字的方法
伪对象选择器包含三种,分别为: E::selection E::after E::before 其中before和after必须与content结合使用,如果content想用几何图形要加 \ 进行转 ...
- javaweb学习总结二十二(servlet开发中常见的问题汇总)
一:web应用的映射问题 通常我们从别人那里拷贝来的代码,自己会修改应用的名称,但是web映射的访问路径并没有修改,还是原来的映射. 解决方法: 工程右键--properties--myeclipse ...