在hadoop运行MapReduce失败原因及其解决方法

刚开始接触在hadoop集群上运行MapReduce,但由于自己能力有限,一开始运行时便遇见了各种各样的bug,最终靠重装hadoop解决了所有问题。
本文便是对之前遇见的各种各样bug进行一个总结
错误一:
在输入完指令:

hadoop jar original-wordcount-1.0-SNAPSHOT.jar remove.TestWordCount

出现

hadoop无法绑定9000端口 hadoop 8032端口无法连接_jar

错误提示:拒绝连接

原因:

可能是因为之前运行的时候不小心打开了slave1的8032端口,导致端口被占用

解决办法:

在从节点slave1下输入指令:netstat -lntp查看端口后,找出8032的端口ID并杀掉,然后再次运行即可

错误二:

提示找不到主类main(由于问题解决了,图片也就没有了)

原因:

架包构建错误

解决办法:

在架包主类中加上:job.setJarByClass(主类名xxx.class);错误三:

一直显示,在这卡死不动

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop_02


原因:

架包构建路径出现错误

解决办法:

在主类路径中加上”主机名:端口号“和路径

例如:

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop无法绑定9000端口_03


错误四:

输入完指令后,显示在运行但在job中卡住了一直不动

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop无法绑定9000端口_04


在master:8088端口查看时

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop无法绑定9000端口_05


点击产看详情时发现:

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop无法绑定9000端口_06


yarnd Node下只能显示 http://原因:

1、可能是自己的虚拟机内存不够,不够满足运行mapreduce的条件

2、yarn集群出问题,节点分配不够

解决办法:

1、百度上查找给虚拟机增加内存或者给mapreduce增加虚拟内存

(在尝试了无数次,发现内存不够不是根本原因)

2、在 /apps/hadoop/etc/hadoop中的slaves文件中增加节点

(对比之后发现这也不是根本原因)

最后不得已放弃在yarn中跑MapReduce,改为默认

修改`/hadoop/ettc/hadoop/mapred-site.xml文件,增加

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop无法绑定9000端口_07

`修改前:

hadoop无法绑定9000端口 hadoop 8032端口无法连接_jar_08


修改后:

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop_09


运行指令后发现竟然成功了

hadoop无法绑定9000端口 hadoop 8032端口无法连接_hadoop无法绑定9000端口_10


也能在节点上产生相应的文件

hadoop无法绑定9000端口 hadoop 8032端口无法连接_错误解决办法_11


而且速度还很快,如果没有硬性的要求下,在本地跑倒是个不错的选择。