首页 > 代码库 > hadoop2.2.0安装需要注意的事情

hadoop2.2.0安装需要注意的事情

今天在安装hadoop2.2.0时遇到若干问题,解决这些问题有些心得,记录下来以备不时之需。

 

问题1、master和slave之间不能相互ssh免密码登陆

  问题表象此处略过,直接说解决办法:

  1、查看.ssh 目录权限是否正确。700、600 经测试都没有问题。

  2、查看.ssh 目录里面文件权限是否正确。最好600.因为ssh服务需要保证此部分文件不能有篡改的风险。

  3、删除id_rsa.pub文件,因为ssh登陆到对端时,对端若存在id_rsa.pub文件,则优先使用这个文件进行公钥验证,而不会使用authorized_keys文件里面保存的公钥。

  4、确保/etc/hosts文件里面主机名和IP地址设置正确

  5、最好把master的authorized_keys文件scp到其他salve节点中。不要文本黏贴复制,容易出错并且不好检查原因。

以上就是今天遇到的ssh不能登录的原因。

 

问题2、启动namenode时报错,日志显示端口已被绑定

  1、重点检查core-site.xml 、 hdfs-site.xml 、hdfs-site.xml 和yarn-site.xml 四个文件里面是否有端口服用的情况。

  2、使用netstat -anl|grep 端口号  检查是否有其他进程占用此端口

 

问题3、执行job任务时,job状态为pending状态,不执行

  出现job挂起的情况,则表明hadoop集群未成功启动,至少有一些模块没有正常启动。首先检查master和slave各节点服务是否正常。

  master正常情况存在:NameNode、SecondaryNameNode、ResourceManager

  slave正常情况存在:DataNode、NodeManager

  如果节点服务不正常,则在$HADOOP_HOME/logs里面检查日志中是否有报错。

 

问题4、slave节点启动nodeManager显示连接master节点RM报错

  首先在master检测端口是否启动。如果没有启动,则在logs目录里面检查是否有报错日志。

  如果master里面端口启动了,那么在slave节点中telnet masterIP Port,看是否可以连通。(此步骤用来确定master绑定的IP和Port是否正确。)

  如果telnet不同,那么检查一下master的/etc/hosts里面的127.0.0.1是否也指定为主机名了,因为操作系统会首先使用第一个主机名所对应的IP地址。(如果正式环境中各节点IP和主机名不会频繁变化,那么还是在配置文件中直接指定IP地址吧)

  今天遇到的问题就是上述三个原因,也可能还有其他原因引起此种情况,但没有遇到。

 

问题5、job在run时,报JAVA异常,UnknownHostException:XXX  

  需要看一下这个错误是哪台节点报出来的。今天遇到的都是master报出来的。开始以为是master连接不上对应节点,导致排查方向出错。后来才搞清楚,slave节点报错也会显示在master。因此master报错不一定表示是master节点的问题,也有可能是某一台slave节点的问题。

  问题原因是slave1的/etc/hosts没有配置slave2的主机名,导致两台slave再通讯时异常,配置/etc/hosts后恢复正常。