假设有A、B、C三台机器,
A会事先造一对通行证(一对公私钥--一种文件),然后把公钥拷贝到B和C机器,A机器登录B或C机器时,会拿私钥去和公钥比对,对上了,即可以登录。
同理,B、C也做相同的工作。
实际上,一般用namenode呼唤datenode就行了,datenode呼唤namenode没有必要,所以互相通讯用不着。因此一般只在主服务器上做一对公私钥(A),然后把公钥给B和C。单台计算机(伪分布式)也需要公私钥,但是是把公钥传给自身特定的位置,也可以不用密码。
公私钥的协议是SSH协议。
ssh-keygen -t rsa -P '':-t表示以何种方式加密,rsa就是一种加密方式,-P代表后面写密码,单引号''表示没密码(如果要写密码,就在单引号里写)。Linux自带ssh协议,如果没有,可以用yum install安装。
出现下面界面即成功:
注意上图的公钥文件的最后一行的root@hd01(用户名和机器名)。
ssh-copy-id root@hd01:把公钥文件传给root用户的名为hd01的机器(如果是其他机器,将hd01换为IP地址)。
成功界面:
正常情况下,不用start-all.sh命令启动,而是分两步启动:
输入(使用web查看):
看到下图即成功: