Hadoop DataNode用jps查看無法啓動的解決辦法

問題描述:部署好Hadoop環境後,在slave機上運行jps看不到Datanode的進程。(查看DataNode上的/logs下面的日誌,發現顯示DataNode和NameNode的clusterID不同,clusterID可以在/current/VERSION裏面查看,有時候master和slave上該文件的位置不一樣)

解決方式:刪除slave機上hdfs-site.xml中配置的Datanode文件夾中的所有內容(dfs.data.dir參數)(是一個current文件),再初始化Namenode,運行

hdfs namenode -format
  • 1

重新初始化。

原因:多次初始化了Namenode,但master沒有清空所有Datanode文件夾中的初始化數據,使得兩個文件夾中生成的ID不一致,刪除Datanode文件夾中的初始化數據後再初始化Namenode就會生效了。(通常是/dfs/data下的/current文件)

再次啓動Hadoop,使用jps就能看到Datanode進程了。

通常,master上的namenode不要經常格式化,啓動hadoop用start-all.sh(如果master和slave直接設置了ssh免密碼通信,只需要在master上啓動服務就行)

當發現NameNode無法啓動,DataNode可以查看到,讀取logs顯示:java.io.IOException: There appears to be a gap in the edit log.  We expected txid 1, but got txid 99這樣的出錯信息,是因爲NameNode元數據損壞,需要恢復。解決方法如下:

master上修復NameNode:hadoop namenode -recover(一路選擇c)

關閉所有服務:stop-all.sh

重啓服務:start-all.sh                      

再查看成功。


參考:http://blog.csdn.net/baidu_27280587/article/details/53393652

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章