1. 程式人生 > >解決Hadoop啟動時,沒有啟動datanode

解決Hadoop啟動時,沒有啟動datanode

Hadoop在多次執行下列指令

hadoop namenode -formatsbin/start-dfs.sh

經常會出現沒有啟動datanode的情況。執行命令:

jps

發現沒有datanode執行緒。
現給出原因和解決方案

原因

當我們使用hadoop namenode -format格式化namenode時,會在namenode資料資料夾(這個資料夾為自己配置檔案中dfs.name.dir的路徑)中儲存一個current/VERSION檔案,記錄clusterID,datanode中儲存的current/VERSION檔案中的clustreID的值是上一次格式化儲存的clusterID,這樣,datanode和namenode之間的ID不一致。

解決方法

  • 第一種:如果dfs資料夾中沒有重要的資料,那麼刪除dfs資料夾,再重新執行下列指令: (刪除所有節點下的dfs資料夾,dfs目錄在${HADOOP_HOME}/tmp/)

    hadoop namenode -formatsbin/start-dfs.sh
  • 第二種:如果dfs檔案中有重要的資料,那麼在dfs/name目錄下找到一個current/VERSION檔案,記錄clusterID並複製。然後dfs/data目錄下找到一個current/VERSION檔案,將其中clustreID的值替換成剛剛複製的clusterID的值即可;

  • 檢查配置檔案的書寫格式是否正確,start-all.sh,後,個別配置檔案格式書寫錯誤,不會拋異常,例如下邊的的core-site.xml  

  • <configuration><property><name>fs.defaultFS<name><value>hdfs://192.168.111.128</value></property></configuration>

  • 正確格式,<configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://192.168.111.128</value>
    </property>
    </configuration>

總結

其實,每次執行結束Hadoop後,都應該關閉Hadoop.

sbin/stop-dfs.sh

下次想重新執行Hadoop,不用再格式化namenode,直接啟動Hadoop即可

sbin/start-dfs.sh