hadoop2.7.3分布式集群问题汇总(持续更新)

来源:互联网 发布:四川卫生统计网络直报 编辑:程序博客网 时间:2024/06/09 16:43

问题(1)

java.net.BindException: Port in use: 0.0.0.0:50070
at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:919)
at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:856)
at org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer.start(NameNodeHttpServer.java:142)
at org.apache.hadoop.hdfs.server.namenode.NameNode.startHttpServer(NameNode.java:753)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:639)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:812)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:796)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)
Caused by: java.net.BindException: Address already in use


解决办法:

netstat -antup

找到占用的端口,kill掉。


问题(2)

hadoop明明已经停止了,用jps已经看不到相关的进程了,可是,在浏览器仍然能显示hadoop的web界面,用./sbin/stop-all.sh命令几次都无效,

查看进程,仍然有hadoop相关的进程在运行,启动hadoop,也无法启动,日志提示java.net.BindException: Port in use: 0.0.0.0:50070。


解决方法:这个是hadoop重复启动导致,跟tomcat重复启动一样,无法用停止命令停止。只好一个个kill掉hadoop的进程。

hadoop的进程有以下:

NameNode、 Secondary NameNode、DataNode、JobTracker、 TaskTrack、ResourceManager 

一个个kill掉。


问题(3)

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:327)
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:215)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:975)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:681)
at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:585)
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:645)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:812)
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:796)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1493)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1559)


解决方法:

这个是hdfs已存在的tmp文件区与重新启动的hadoop tmp 文件区 不一致,需要先把已有的tmp文件路径删掉,然后重新格式化hdfs:

./bin/hdfs namenode -format
再启动。

问题(4)

java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-root/dfs/data: namenode clusterID = CID-64ad6039-2d4f-4780-a461-b6844cd06ea1; datanode clusterID = CID-3efe12f0-7797-4d43-9a87-1135c668c73c
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)
at java.lang.Thread.run(Thread.java:745)
2017-06-22 16:50:06,190 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to master/119.29.174.43:9000. Exiting. 
java.io.IOException: All specified directories are failed to load.


这个也是hdfs的已有的文件和启动hadoop生成的新的文件区部不一致。

需要先把已有的tmp文件路径删掉,然后重新格式化hdfs:

./bin/hdfs namenode -format

再启动。


问题(5):

name node is in safe mode

解决方法:

在hadoop文件夹路径下,

./bin/hdfs dfsadmin -safemode leave

这样可以解决,类似的命令还有:

./bin/hdfs dfsadmin -safemode enter  #进入安全模式./bin/hdfs dfsadmin -safemode get    #查看安全模式


原创粉丝点击