代码改变世界

hadoop集群安装

2013-08-07 12:50  solarstorm_java  阅读(432)  评论(0编辑  收藏  举报

首现非常感谢 虾皮http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html) 安装过程是参照他的《Hadoop集群(第5期)_Hadoop安装配置》

进行配置安装的,但是安装过程中出现了一些细节问题,特此在这做个记录,有遇到和我相同或者类似问题的可以参照一下。

 

下面的配置介绍有些只是粗略的说一下,因为虾皮博客中已经介绍的很详细了,我就不再赘述了,重点在地方我会标注出来(一些细节)。

 

1.环境介绍

    我用的是CentOS5.8  一个NameNode,两个DataNode。NameNode(Master)的IP:192.168.17.128;DataNode1(Slave_01)的IP:192.168.17.130;

    DataNode2(Slave_02)的IP:192.168.17.131;

 

2.软件介绍

  JDK:jdk1.6.0_38

  Hdoop:hadoop-1.0.0.tar.gz

  FTP工具:WinSCP

 

3.安装出现的细节问题

  3.1 tmp目录

    在hadoop下创建tmp文件夹(目录)以后,它默认所属用户为root,需要给hadoop用户添加读的权限

    chown hadoop:hadoop tmp,但是这样还是会有问题

  TaskTracker local dir /usr/local/hadoop/tmp/mapred/local error can not create directory: /usr/local/hadoop/tmp/mapred/local, removing from local dirs

     

 

     出现这个问题的原因就是我们创建tmp目录的权限问题,chmod a+w tmp修改完成之后把NameNode,DataNode下的tmp目录清空,

     然后重新执行hadoop namenode -format

 

 

 

 

 

  3.2 core-site.xml文件

    

 

 

 

   3.3 mapred-site.xml文件

     

 

 

  3.4 hadoop 1.0.0版本,安装完之后敲入hadoop命令时,老是提示这个警告:

    编辑"/etc/profile"文件,添加一个环境变量,之后警告消失------>export HADOOP_HOME_WARN_SUPPRESS=1

 

 

  3.5 NameNode中namespaceID和DataNode中namespaceId不一致

 

    

 

其实出现此问题的原因很简单,每次namenode  format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode  format清空了namenode下的数据,但是没有晴空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录

当我们执行stop-all.sh的时候,发现datanode并没有启动

  

 

最简单的解决办法就是,把NameNode和所有DataNode中的tmp目录下的所有目录全部删除,然后重新在namenode上format,问题随之消失。

 

  3.6 java.net.UnknownHostException: Slave_01 is not a valid Inet address

    

    出现此问题的原因是主机名中不能加下划线。

 

  3.7 Cannot delete /usr/local/hadoop/tmp/mapred/system. Name node is in safe mode

    

    解决方案是:关闭安全模式  hadoop dfsadmin -safemode leave

 

 

4.问题总结

    出现问题一定要去查看日志文件,不要因为一出错就不知所措,错误总有解决的办法。

      这里所说的查看日志不仅仅是查看master的日志,也要去查看各个Slave的日志。