Hadoop集群配置问题

手册/FAQ (678) 2016-04-18 09:14:03

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部分是运行正常的,即通过浏览器http://10.*.*.33:50030/jobtracker.jsp是成功的,可是50070却失败(dfs部分没有成功,http://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这个词),http://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

 

THE END