最近公司让我搭建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地址发生冲突了所导致的。所以我得感谢我的那位同事。谢谢。问题就解决了。