阿里云ECS上搭建Hadoop集群环境——设置免密码ssh登陆

转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/81288378
本文出自【我是干勾鱼的博客】

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无密码登陆 (重点推荐)

你可能感兴趣的:(Hadoop,走进Hadoop)