在配置hadoop集群的时候,需要在master主机和slave主机之间进行无密钥通信,我的两个机器上的用户名都是hadoop,通信是在两台机器的hadoop用户之间通信,而不是root用户。
先查看在两台机器上/home/hadoop下有没有.ssh文件夹,这是一个隐藏文件夹,用命令ls -a查看,如果没有,需要mkdir -p .ssh新建
分别在两台机器上的hadoop用户下输入命令ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa 这个命令会在.ssh文件夹下生成两个文件,id_dsa和id_dsa.pub,分别是一个私钥和一个公钥
输入命令cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys把公钥加到用于认证的公钥文件中,注意这其中.ssh文件夹和authorized_keys文件的权限都需要是可执行才能修改成功,用命令
chmod -fR 700 .ssh和chmod -fR 700 authorized_keys
将master主机上的authorized_keys文件复制到slave主机上:scp ~/.ssh/authorized_keys hadoop@slave:/home/hadoop/.ssh/ 但是要注意,这里面复制到slave主机上时本来是要和hadoop用户交互,但是第一次需要提供hadoop的密码,而你可能怎么输入hadoop的密码都无法连接,这时,就需要用root用户通信:scp ~/.ssh/authorized_keys root@slave:/home/hadoop/.ssh/记得要改权限
但是在这之前,你一点要给slave机器设置好主机名slave,否则上述命令不认slave主机,在两个机器的/home/hadoop/hadoop安装目录/conf下分别有一个masters和slaves文件
conf/masters:
master
conf/slaves:
slave
在这之前要分别在/etc/sysconfig/network和 /etc/hosts文件以root身份修改主机名
然后ssh -version查看ssh是否安装成功
ssh -localhost查看是否能与本机通信
在master上ssh slave进行验证