###免密钥是为了解决hadoop集群各个节点通信的问题,即通信不在需要填写密码,ssh连接的安全性由密钥验证机制来完成
一、配置
注意的东西来了
你配置的机器可能有多个用户,但你需要选一个来做hadoop的管理用户,而你接下来的操作将在hadoop的用户的根目录下即(当前用户是hadoop用户):~/ 目录下,其他的则在 /home/hadoop用户名/ 目录下 (将来ssh免密钥连接的是你hadoop用户)
注意区分:用户根目录与系统根目录
开始配置(现在默认当前用户是hadoop的用户)
(1)跳到~/.ssh文件夹下: cd ~/.ssh
( 2 )生成公钥id_rsa.pub和密钥id_rsa : ssh-keygen -t rsa
( 3 ) 将id_rsa.pub的内容追加到authorized_keys文件中(公钥替换加到authorized_keys): cat id_rsa.pub > authorized_keys
( 4 )每一个节点都进行(1)(2)(3)操作
( 5 )最后将所有节点的authorized_keys内容汇合:
每个datanode节点都执行下面操作(authorized_keys1的名字要改)
scp ~/.ssh/authorized_keys hadooptest@172.16.19.1:~/.ssh/authorized_keys1
执行完后,在172.16.19.1的hadooptest的.ssh中将传来所有的authorized_keys,追加到本地的authorized_keys(每个传来的authorized_keys执行一次):
cat authorized_keys1>> authorized_keys(这里是">>")
(6)将172.16.19.1的hadooptest的.ssh中的authorized_keys再分发给各个节点。
同样是scp命令,就不写了。
二、错误总结
1、hadoop运行需要连接其他节点出现要密码时,说明ssh免密钥没做好,要重做
2.注意authorized_keys的权限必须是600,否则还要密码