1. 程式人生 > >hadoop偽分散式DataNode無法啟動

hadoop偽分散式DataNode無法啟動

  start-dfs.sh一直啟動不了DataNode,仔細檢查了幾遍配置檔案都沒有發現什麼問題,有format了好幾次也不行。看DataNode的日誌發現這個:

java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/tmp/dfs/data: namenode clusterID = CID-a9dce729-7647-41bb-8ec1-503d1525b774; datanode clusterID = CID-157f0edd-80b0-47f2-931a-f86bc947db23
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:722)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:286)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:399)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:379)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:544)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1690)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1650)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:348)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:280)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:816)
    at java.lang.Thread.run(Thread.java:748)

  看樣子像是DataNode和NameNode的clusterID不匹配導致的,最後在hdfs-site.xml裡配置的dfs.datanode.data.dir路徑下有個VERSION檔案,把裡面的clusterID修改成和dfs.namenode.name.dir路徑下的VERSION裡的clusterID一致。OK!啟動成功。
  原因呢,在網上查了下,是因為執行格式化命令(hdfs namenode -format)時會重新生成namenode的clusterID,而datanode的clusterID還是舊的沒有改變。