在hadoop运行MapReduce失败原因及其解决方法
刚开始接触在hadoop集群上运行MapReduce,但由于自己能力有限,一开始运行时便遇见了各种各样的bug,最终靠重装hadoop解决了所有问题。
本文便是对之前遇见的各种各样bug进行一个总结
错误一:
在输入完指令:
hadoop jar original-wordcount-1.0-SNAPSHOT.jar remove.TestWordCount
出现 错误提示:拒绝连接
原因:
可能是因为之前运行的时候不小心打开了slave1的8032端口,导致端口被占用
解决办法:
在从节点slave1下输入指令:netstat -lntp
查看端口后,找出8032的端口ID并杀掉,然后再次运行即可
错误二:
提示找不到主类main(由于问题解决了,图片也就没有了)
原因:
架包构建错误
解决办法:
在架包主类中加上:job.setJarByClass(主类名xxx.class);
错误三:
一直显示,在这卡死不动
原因:
架包构建路径出现错误
解决办法:
在主类路径中加上”主机名:端口号“和路径
例如:
错误四:
输入完指令后,显示在运行但在job中卡住了一直不动
在master:8088端口查看时
点击产看详情时发现:
yarnd Node下只能显示 http://
原因:
1、可能是自己的虚拟机内存不够,不够满足运行mapreduce的条件
2、yarn集群出问题,节点分配不够
解决办法:
1、百度上查找给虚拟机增加内存或者给mapreduce增加虚拟内存
(在尝试了无数次,发现内存不够不是根本原因)
2、在 /apps/hadoop/etc/hadoop
中的slaves文件中增加节点
(对比之后发现这也不是根本原因)
最后不得已放弃在yarn中跑MapReduce,改为默认
修改`/hadoop/ettc/hadoop/mapred-site.xml文件,增加
`修改前:
修改后:
运行指令后发现竟然成功了
也能在节点上产生相应的文件
而且速度还很快,如果没有硬性的要求下,在本地跑倒是个不错的选择。