集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),一般情况下,CentOS 默认已安装了 SSH client、SSH server。
执行如下命令测试一下 SSH 是否可用:ssh localhost
首先输入 exit
退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat id_rsa.pub >> authorized_keys # 加入授权
chmod 600 ./authorized_keys # 修改文件权限
单机免密已配置完成,接下来配置集群绵密:
首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):
cd ~/.ssh # 如果没有该目录,先执行一次ssh localhost
rm ./id_rsa* # 删除之前生成的公匙(如果有)
ssh-keygen -t rsa # 一直按回车就可以
然后把密码传到其他两个节点上执行命令:
scp ~/.ssh/id_rsa.pub hadoop@hadoop002:/home/hadoop/
scp ~/.ssh/id_rsa.pub hadoop@hadoop003:/home/hadoop/
上传好之后在hadoop002和hadoop003节点上对公钥授权:
mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub # 用完就可以删掉了
可以对集群分别免密,实现方法和以上步骤一样,只需要在hadoop002上进行公钥生成传到hadoop001和hadoop003上,然后在Hadoop001和hadoop003上进行授权,最后在hadoop003进行公钥生成,上传到hadoop001和hadoop002上,然后分别授权即可。