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