Open shendb opened 7 years ago
是不是/etc/hosts里面没有定义你需要的IP和node名称?
先说一下原理 配置ssh免密码,目的是N个节点互相访问(包括访问自己本身的节点)的时候,可以免密码登陆
所以,可以在任何节点里面进行ssh免密码登陆的访问。
举例来说,如果在NameNode节点配置ssh的话,基本操作流程如下
0,NameNode,DataNode1,DataNode2,节点操作
生成公钥
ssh-keygen -t rsa
1,NameNode节点操作
cd ~
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
2,DataNode1,DataNode2,节点操作
cat .ssh/id_rsa.pub
3,分别将DataNode1,DataNode2,两个节点的公钥(即id_rsa.pub)的内容,复制到NameNode节点的authorized_keys文件中(注意:每个公钥占用一行)
4,NameNode节点操作
将编辑好的authorized_keys文件,发送给DataNode1,DataNode2
scp ~/.ssh/authorized_keys root@DataNode1:/root/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@DataNode2:/root/.ssh/authorized_keys
反之,再换另外一个例子,如果在DataNode1节点配置ssh的话,基本操作流程如下
0,NameNode,DataNode1,DataNode2,节点操作
生成公钥
ssh-keygen -t rsa
1,DataNode1节点操作
cd ~
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
2,NameNode,DataNode2,节点操作
cat .ssh/id_rsa.pub
3,分别将NameNode,DataNode2,两个节点的公钥(即id_rsa.pub)的内容,复制到DataNode1节点的authorized_keys文件中(注意:每个公钥占用一行)
4,DataNode1节点操作
将编辑好的authorized_keys文件,发送给NameNode,DataNode2
scp ~/.ssh/authorized_keys root@NameNode:/root/.ssh/authorized_keys
scp ~/.ssh/authorized_keys root@DataNode2:/root/.ssh/authorized_keys
两个例子里面对于NameNode,DataNode1,DataNode2,这几个hostname,需要根据自己配置的情况,进行相应的修改。
hostname文件里面保存的是本机主机名 hosts文件里面包含机器名和ip的对应关系,可以理解为本地dns
在第一节课提供的Hadoop镜像中,hosts文件的内容大概是下面这样的
Hadoop-NameNode 192.168.101.231
Hadoop-DataNode-1 192.168.101.232
Hadoop-DataNode-2 192.168.101.233
192.168.101.231 Hadoop-NameNode
192.168.101.232 Hadoop-DataNode-1
192.168.101.233 Hadoop-DataNode-2
可以根据自己本地的ip地址情况,进行相应的修改
Hadoop-NameNode 192.168.101.231
小小地更正一下,主机名和IP似乎反了。
如果大家自己下载并安装ubuntu的话,home目录里是没有.ssh目录和公钥的。运行 ssh-keygen -t rsa 可以生成公钥,并且默认放在~/.ssh 目录。
@chengwei1987 :+1: 谢谢指正,上面的内容已经修改。 :smile: 动手实验还是很重要的。
谢谢回答,下班回家试一下。
现象如图所示