主要内容应该是搭建hadoop分布式集群中遇到的一些错误汇总,持续更新中。。。
- 启动hdfs的时候遇到如下错误。
java.io.IOException: Incompatible clusterIDs in /home/hadoop/datadir: namenode clusterID = CID-10fbfd82-9cd4-4a3c-beb6-796445b17c12; datanode clusterID = CID-bb38e9b5-a115-4574-8018-add76d30ef25
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:646)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:320)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:403)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:422)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1311)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1276)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:314)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:828)
at java.lang.Thread.run(Thread.java:745)
注意报错信息加粗部分,namenode和datanode有不同的clusterID. 这大概就是出错的根源。原因可能是两次format了hdfs. 这个clusterID保存在master的namenode下面或者slave的datanode下面。
解决方案就是把master机器上namedir/current/version里的clusterID拷贝到slave机器datadir/current/version. 这里的namedir和datadir是自建文件夹,配置在hdfs-site.xml里面。
- 启动yarn的时候datanode启不来,报错如下。
org.apache.hadoop.yarn.exceptions.YarnRuntimeException: Recieved SHUTDOWN signal from Resourcemanager ,Registration of NodeManager failed, Message from ResourceManager: NodeManager from slave1 doesn't satisfy minimum allocations, Sending SHUTDOWN signal to the NodeManager.
at org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl.registerWithRM(NodeStatusUpdaterImpl.java:265)
at org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl.serviceStart(NodeStatusUpdaterImpl.java:191)
at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
at org.apache.hadoop.service.CompositeService.serviceStart(CompositeService.java:120)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceStart(NodeManager.java:264)
at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:463)
at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:509)
搜索了一下,这个错误的原因大概是yarn里面的nodemanager内存配置小了。反正我是通过这个方法解决的。解决方案是修改yarn-site.xml文件。把value修改到1024以上,最好修改为你的内存大小。
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
- hadoop配置好,能正常启动,但是运行wordcount案例的时候,分配好jobtracker. 一直停止在mapreduce.Job: Running job这里,map和reduce都不继续工作。
这个也可以大概也是nodemanager的内存太小,或者跟服务器的内存不匹配,具体原因没深入调查。我也是通过修改yarn-site.xml文件解决的。凡是mapreduce跑不动首先考虑内存太小。
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
注意任何修改都请重启hadoop.
$ stop-all.sh
$ start-all.sh