hadoop集群中namenode超时无法连接datanode的原因和解决办法


最近公司让我搭建64位的集群,我重新编译了一下hadoop的源码,并部署环境。在这个过程中遇到了一些问题:

问题1:hdfs-site.xml文件的配置问题,在配置

<property>
<name>dfs.namenode.name.dir</name>
<value>file:///home/grid/hadoop-2.5.2/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///home/grid/hadoop-2.5.2/dfs/data</value>
</property>

时,要注意两点:

  一、设置的路径*/dfs/name注意权限的问题,由于一开始我是用root用户创建的路径,因此出现了权限问题,导致hdfs格式化失败。

  二、配置这个namenode和datanode存放路径的时候,前面需要加file://,否则格式化失败

 

问题2:集群当中各节点之间是通过ssh免密码登录,我偶然遇到某些datanode超时后,namenode就无法通过ssh免密码登录到该datanode上,而有些datanode是非常正常的。首先我能确定我的所有节点的防火墙都关闭了。于是google了一下。发现有个地方可能会导致我的问题。尝试了一下。其解决办法就是:

  禁用selinux: 
  编辑 /etc/selinux/config文件,设置“SELINUX=disabled”

  这个文件控制两个配置设置:SELinux模式和活动策略。SELinux模式(由第6行的SELINUX选项确定)可以被设置为enforcing,permissive或disabled。

  在enforcing模式下,策略被完整执行,这是SELinux的主要模式,应该在所有要求增强Linux安全性的操作系统上使用。

  在permissive模式下,策略规则不被强制执行,相反,只是审核遭受拒绝的消息,除此之外,SELinux不会影响系统的安全性,这个模式在调试和测试一个策略时非常有用。

  在disabled模式下,SELinux内核机制是完全关闭了的,只有系统启动时策略载入前系统才会处于disabled模式,这个模式和permissive模式有所不同,permissive模式有SELinux内核特征操作,但不会拒绝任何访问,只是进行审核,在disabled模式下,SELinux将不会有任何动作,只有在极端环境下才使用这个模式,例如,当策略错误阻止你登陆系统时,即使在permissive模式下也有可能发生这种事情,或我们不想使用SELinux时。

  注意:

  这个解决办法,不知道是否真的有效,但是我照做了,但是问题还是没解决。最后我尝试了重新安装一下openssh-server-6.6.1p1-11.1.fc21.x86_64和openssh-clients-6.6.1p1-11.1.fc21.x86_64。安装这个之前必须安装:openssh-6.6.1p1-11.1.fc21.x86_64,在安装openssh-6.6.1p1-11.1.fc21.x86_64之前必须安装libselinux-2.3-5.fc21.x86_64包。发现问题也没有解决。

  后来到了第二天早上上班,同时在群里面说他的ip地址跟我的虚拟机的ip地址发生冲突,顿时我高兴了,因为我知道我的问题就是跟别人的ip地址发生冲突了所导致的。所以我得感谢我的那位同事。谢谢。问题就解决了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM