在啓動Hadoop集羣時,每每會出現這樣或那樣的問題,好比節點中DataNode進程啓動不了,非常讓人頭疼,下面說下具體的解決辦法(複雜版),簡單版見最後:node
(1)中止關於Hadoop的全部進程oop
(2)刪除每一個節點Hadoop目錄下 logs 和 tmp 文件夾,命令以下:ui
sudo rm -rf logs sudo rm -rf tmp
(3)手動從新建立每一個節點下 logs 和 tmp 文件夾,命令以下:spa
mkdir logs mkdir tmp
(4)cd到Hadoop/bin目錄下,從新格式化:scala
hdfs namenode -format
沒有問題後,從新啓動hadoop集羣,DataNode進程成功啓動。code
具體的緣由仍是:orm
datanode的clusterID 和 namenode的clusterID 不匹配進程
成功啓動DataNode進程後,咱們能夠查看各節點tmp目錄下文件。hadoop
做爲namenode節點,其文件目錄爲:hadoop/tmp/dfs/name/current;io
做爲datanode節點,其文件目錄爲:hadoop/tmp/dfs/data/current;
在目錄下咱們使用 cat 命令查看 VERSION 文件,分別爲:
[hadoop@slave01 current]$ cat VERSION #Mon Jun 25 10:15:16 CST 2018 namespaceID=2112363039 clusterID=CID-5a83590f-0667-49f7-a7ee-c27165216e28 cTime=0 storageType=NAME_NODE blockpoolID=BP-1317085386-127.0.0.1-1529892916541 layoutVersion=-63
[hadoop@slave02 current]$ cat VERSION #Mon Jun 25 10:16:52 CST 2018 storageID=DS-554910b7-5a75-4a41-a7c2-4f9d137dfd9d clusterID=CID-5a83590f-0667-49f7-a7ee-c27165216e28 cTime=0 datanodeUuid=3cdb4500-3548-471e-86bc-7daea441fb26 storageType=DATA_NODE layoutVersion=-56
能夠看出:namenode和datanode的clusterID是一致的。
因此,從新格式化的操做不要隨便使用,這可能致使兩個clusterID不一致,引發進程啓動不了的問題,網上也有說不用從新格式化和刪除目錄,而是經過將namenode下的clusterID複製到datanode下的clusterID,覆蓋掉原來的,讓兩個保持一致,這種方式沒試過,不知道好使很差使,你們能夠嘗試下(該方式已被證明,親測可用哦)。