阿里云ECS上搭建Hadoop集群环境——设置免密码ssh登陆"/>
阿里云ECS上搭建Hadoop集群环境——设置免密码ssh登陆
转载请注明出处:
本文出自【我是干勾鱼的博客】
Ingredient:
-
Hadoop:hadoop-2.9.1.tar.gz(Apache Hadoop Releases Downloads, All previous releases of Hadoop are available from the Apache release archive site)
-
Java:Java SE Development Kit 8u162(Oracle Java Archive),Linux下安装JDK修改环境变量
环境介绍:
-
服务器:2台阿里云ECS服务器:1台Master(test7972),1台Slave(test25572)
-
操作系统: Ubuntu 16.04.4 LTS
-
Hadoop:hadoop-2.9.1.tar.gz
-
Java:*Java SE Development Kit 8u162
在阿里云ECS下搭建Hadoop集群环境,需要设置免密码ssh登陆,这里就来介绍一下Linux环境下免密码ssh登陆。
1 单服务器免密码ssh登陆设置
如果是在1台服务器上搭建Hadoop的伪分布式系统环境“Pseudo-Distributed Operation”,那么只需配置服务器针对自己的ssh免密登陆就可以了。官网Hadoop: Setting up a Single Node Cluster上面介绍的也很清楚。
先确保能够使用ssh命令免密码登陆自己:
ssh localhost
如果不能免密码登陆自己,那么需要进行配置:
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
然后就可以使用:
ssh localhost
进行本机免密码登录测试了。
注意: 登陆之后,记得执行:
exit
推出!
2 在2台服务器之间设置免密码ssh登陆
假设目前有2台服务器:
1台Master(test7972)
1台Slave(test25572)
现在要设置它们之间免密码ssh登陆。
2.1 配置Master(test7972)免密码登陆Slave(test25572)
免密码ssh登录的原理是这样的:
-
1.Master(NameNode | JobTracker)如果作为客户端,实现无密码公钥认证,来连接到服务器Salve(DataNode | Tasktracker)上,需要在Master上生成一个密钥对,包括1个公钥和1个私钥,然后需要将公钥复制到所有的Slave上。
-
2.当Master通过SSH连接Salve时,Salve就会生成一个随机数,并且用Master的公钥对随机数进行加密,并且发送给Master。
-
3.Master收到加密数之后,会使用自己的私钥解密,并将解密数回传给Slave。
-
4.Slave确认解密数无误之后就允许Master进行连接了。
这就是一个公钥认证过程,这个过程中不需要用户手动输入密码。而具体到实现这个无密码登录的准备过程,重要的是将客户端Master的公钥复制到Slave上。
2.1.1 创建“.ssh”目录
若“.ssh目录”不存在,创建”.ssh目录”:
mkdir ~/.ssh
2.1.2 修改“.ssh 目录”权限。
chmod 700 ~/.ssh
2.1.3 创建Master(test7972)服务器的公钥和私钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
这个过程会在目录:
~/.ssh/
下生成公钥:
id_rsa
和私钥:
id_rsa.pub
2.1.4 配置Master(test7972)本机ssh免密登录做测试
同第1步类似,在Master(test7972)上配置一下本机的ssh免密登录,将公钥“id_rsa.pub”追加到授权的key里面:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
授权:
chmod 0600 ~/.ssh/authorized_keys
然后使用命令:
ssh localhost
做测试,没问题就可以了。
注意: 登陆之后,记得执行:
exit
推出!
2.1.5 修改SSH配置文件"/etc/ssh/sshd_config"
修改SSH配置文件:
/etc/ssh/sshd_config
确保以下内容信息:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
由于笔者使用的服务器均为:
Ubuntu 16.04.4 LTS
前2项均已设置为“yes”,而第3项背注释了,但是不影响使用ssh免密登录的效果,故这里酌情处理。
2.1.6 拷贝Master(test7972)的公钥到Slave(test25572)上去
执行命令:
scp ~/.ssh/id_rsa.pub hadoop@test25572:~/
2.1.7 配置Slave(test25572)节点
登录Slave(test25572)节点,执行以下操作:
- 1.修改.ssh权限:
chmod 700 ~/.ssh
- 2.把Master(test7972)的公钥追加到Slave(test25572)的授权文件"authorized_keys"中去:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
- 3.修改该授权文件的权限:
chmod 600 ~/.ssh/authorized_keys
2.1.8 测试免密码登录
在Master(test7972)上执行:
ssh test25572
其中“test25572”已经在Master(test7972)的“/etc/hosts”文件中配置过了,如果这个登录不需要输入密码,那么免密码ssh登录就设置成功了!
2.2 配置Slave(test25572)免密码登陆Master(test7972)
同上面2.1所述。
3 参考
Hadoop: Setting up a Single Node Cluster
完全分布式hadoop集群搭建SSH免密码登录(详细版)
hadoop 配置集群之间SSH无密码登陆 (重点推荐)
更多推荐
阿里云ECS上搭建Hadoop集群环境——设置免密码ssh登陆
发布评论