1.在进行Hadoop集群配置中,需要在/etc/hosts文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,还可以通过主机名进行通信。
2.配置SSH无密码认证。
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode通过SSH来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,我们需要配置SSH运行无密码公钥认证的形式。这样NameNode和DataNode之间可以SSH无密码登陆。
SSH无密码认证需要两个服务:ssh和rsync。
SSH无密码原理
Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
过程:
1.在master节点上执行:
ssh-keygen -t rsa -P ' ' #生成无密码密钥对
2.在master节点上把id_rsa.pub追加到授权的key里去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3.验证前,(1)修改文件authorized_keys的权限。
chmod 600 ~/.ssh/authorized_keys
备注:如果不进行设置,在验证时,扔提示你输入密码。
(2)用root用户设置/etc/ssh/sshd_config的内容,使其无密码登录有效。
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
设置完后重启SSH服务,service sshd restart 。
查看SSH版本,ssh -V
3.Hadoop配置
(1)hadoop2.x没有mapred-site.xml,只有mapred-site.xml.template,用户需要复制一份模板。
(2)masters,尽量使用IP。hadoop2.x没有masters文件。
(3)slaves ,配置datanode机器,只有namenode特有。
(4)tmp文件夹权限必须是当前用户。
(5)hadoop2.6.0默认为64位环境,运行在32位机器上会出现一些警告。不影响结果。
hdfs文件系统格式化 hdfs namenode -format
hadoop2.x之后使用ResourceManager和NodeManager代替了JobTracker和TaskTracker。
查看ResourceManager,http://master:8088
查看NameNode,http://master:50070
Yarn配置
1.yarn-env.sh
export JAVA_HOME=
常见问题:
1.Namenode没有正常启动。
50070等端口被占。关闭浏览器等。
2.Datanode 没有正常启动。
清空hadoop.tmp.dir目录。
3.