常見錯誤:2、Hadoop多次格式化導致datanode無法啟動

hadoop namenode -format 多次格式化后,datanode啟動不了

報錯信息
017-12-14 05:07:57,636 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Starting BPOfferServices for nameservices: <default>
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:409)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:388)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:556)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1566)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1527)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:327)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:266)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:746)
        at java.lang.Thread.run(Thread.java:745)
2017-12-14 05:07:58,922 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid 63404450-ed85-4636-8eac-ea75dba1d424) service to hadoop/192.168.137.5:9000. Exiting.
java.io.IOException: All specified directories are failed to load.
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:557)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1566)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1527)
        at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:327)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:266)
        at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:746)
        at java.lang.Thread.run(Thread.java:745)
注意
Incompatible clusterIDs in /tmp/hadoop-hadoop/dfs/data: namenode clusterID = CID-c80f243c-4a07-43f3-9eb8-f40d164a4520; datanode clusterID = CID-3e6fcd99-a2fe-42f3-9ccf-bc257a065eb3
1

可以看出,namenode的clusterID和datanode的clusterID不同,導致其無法啟動。原因是我們多次格式化namenode導致兩者id不同,無法啟動。

解決方案

0.20.2版本解決方式

1、查看名稱節點上(即在配置文件中配置的hadoop.tmp.dir參數路徑)/usr/hadoop0.20.2/hadoop-huanghz/dfs/name/current/文件夾中VERSION文件中的namespaceid;
2、在兩個數據節點修改上dfs.data.dir配置的路徑下current文件夾中的VERSION文件namespaceid與名稱節點保持一致

2.x版本解決

/data/hadoop/dfs/name/current/VERSION
用name下面的clusterID,修改datanode的/data/hadoop/dfs/data/current/VERSION 里面的clusterID
每次格式化,name下面的VERSION的clusterID會產生一個新的ID,要去修改各個節點的VERSION的clusterID 

……/dfs/data/current


storageID=DS-1959445666-10.161.138.100-50010-1386493413986
clusterID=CID-64a3a726-29e4-4d80-86a6-035ef33a225b
cTime=0
storageType=DATA_NODE
layoutVersion=-47

……/dfs/name/current/VERSION
#Fri Jan 03 10:37:48 CST 2014
namespaceID=1667984727
clusterID=CID-42c6d540-c3ca-44df-95e8-01a6d87effb5
cTime=0
storageType=NAME_NODE
blockpoolID=BP-220196921-10.161.138.100-1388716668863
layoutVersion=-47
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 目錄-[-]1 先決條件2 實驗環境搭建 21 準備工...
    三三At你閱讀 850評論 0 3
  • 這個年的感覺就是清冷。 越長大越孤單吧。不知道怎么說這種感覺,不知道未來怎樣,過好每一天吧。
    韓靜水閱讀 154評論 0 0
  • 使用masonry同樣可以達到布局界面的效果.Masonry用來替代Constrain那種冗長的代碼是極好的. 主...
    Tinchi_To閱讀 228評論 0 0
  • 2017、9、10 深圳 晴 我是日記星球第256號星寶寶希望~梅子……正在參加日記星球第九期蛻...
    梅子日記閱讀 803評論 4 4