<div class="entry-content">
<p>Hadoop在多次運行下列指令:</p>
hadoop namenode -format
sbin/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文件夾,再重新運行下列指令:
- hadoop namenode -format
- sbin/start-dfs.sh
- 第二種:如果dfs文件中有重要的數據,那么在dfs/name目錄下找到一個current/VERSION文件,記錄clusterID並復制。然后dfs/data目錄下找到一個current/VERSION文件,將其中clustreID的值替換成剛剛復制的clusterID的值即可;
總結
其實,每次運行結束Hadoop后,都應該關閉Hadoop.
sbin/stop-dfs.sh
下次想重新運行Hadoop,不用再格式化namenode,直接啟動Hadoop即可
sbin/start-dfs.sh