閱讀842 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Hadoop集群配置問題

      師兄給十二台服務器搭建了hadoop平台,10.*.*.33 - 10.*.*.44, 其中33為namenode, 作為master,其他11台都是slaves。

      所有的配置,包括hadoop-env.sh,  hdfs-site.xml,  mapred-site.xml,  masters,  slaves,  core-site.xml都沒有問題,可是進入bin,./start-all.sh之後,mapreduce部分是運行正常的,即通過瀏覽器https://10.*.*.33:50030/jobtracker.jsp是成功的,可是50070卻失敗(dfs部分沒有成功,https://10.*.*.33:50070/dfshealth.jsp訪問失敗)。

      找到logs目錄下的hadoop-***-namenode-***-33.log,裏麵顯示出錯,我一共遇到了兩個錯誤,我一直改來改去,十二台機器一起改,耗了我一個通宵,最後還是除掉了問題,算是沒有白花力氣,總結問題如下:

       1. 在hdfs-site.xml裏

          <name>dfs.name.dir</name>

          <value>/home/cadal/data/hadoop/cluster/name</value>

          為namenode配置的路徑,一定要保證/home/cadal/data/hadoop文件夾下的所有文件的用戶和組別都不能是root!比如我的用戶名是cadal,組別是cadal,就要用命令改變hadoop文件夾內所有子文件夾都是cadal/cadal:

sudo chown -R cadal hadoop
sudo chgrp -R cadal hadoop

        2. 以上這步是為了在/bin下麵做./hadoop namenode -format,可以嚐試一下,如果在這裏命令前麵加sudo是不允許的,這應該就是為什麼/home/cadal/data/hadoop不能是root組別和root用戶的原因。

            繼續說,在/bin下,每次./start-all.sh或者.start-dfs.sh和stop操作的時候,都要做./hadoop namenode -format,而往往data format會失敗,記住,如果沒有執行成功的時候,一定要去/home/cadal/data/hadoop/cluster/name下,執行

sudo rm -rf name
把已有name刪除,再回到/bin下執行

./hadoop namenode -format

換句話說,也許你沒有看到./hadoop namenode -format執行失敗的提示(沒有出現successfully這個詞),https://10.*.*.33:50070/dfshealth.jsp訪問依然失敗,你就會去/logs的

hadoop-***-namenode-***-33.log查到

java.io.IOException: NameNode is not formatted.

或者別的類似的錯誤,比如我在更改root/root之前,一直遇到的


Directory /home/cadal/data/hadoop/cluster/name is in an inconsistant state: storage directory does not exist or is not accessible.

歸根到底原因都是./hadoop namenode -format執行失敗,為什麼失敗?

a. /home/cadal/data/hadoop文件夾下的文件的用戶和組別是root

b. 執行前沒有去刪除/home/cadal/data/hadoop/cluster/name






最後更新:2017-04-02 22:16:38

  上一篇:go 講得非常詳盡的c++經典高清視頻教程打包下載!個人感受很深
  下一篇:go js執行順序測試