在使用hadoop配置集群模式时,必然要使用ssh进行各个机器之间的免密码登录。
环境准备:
集群模式下会有多个主机,而本教程使用的主机名和IP地址如下:
192.168.1.160 master 192.168.1.161 slave1
一、安装ssh服务:
若系统中没有安装ssh服务,则要在每台机器中都安装ssh服务
redhat,fedora,centos等系列linux发行版,命令如下:
sudo yum install sshd
debian,ubuntu,linux mint等系列的linux发行版,命令如下:
sudo apt-get install sshd
按照提示安装之后,需要开启ssh服务
sudo service sshd start
查看ssh服务状态
sudo service sshd status
二、生成公钥和私钥
本节中需要使用ssh中的两个命令:ssh-keygen 产生公钥与私钥对,ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中
首先修改hosts文件,vi /etc/hosts,如下:
#127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 #::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.160 master 192.168.1.161 slave1
登录master,使用rsa算法生成公钥和私钥:
ssh-keygen -t rsa
进入~/.ssh目录,可看到已经生成私钥id_rsa,公钥id_rsa.pub
cd ~/.ssh
id_rsa id_rsa.pub
三、对其他用户进行授权
新建authorized_keys文件,将master的公钥id_rsa.pub内容追加到authorized_keys文件中,注意是追加,而不是覆盖
cat id_rsa.pub >> authorized_keys
使用ssh登录master时,只要authorized_keys文件中保存有master的公钥信息,即可实现免密登录。同理,登录salve1时也需要authorized_keys文件中有slave1的公钥信息。
登录slave1,同样使用ssh-keygen产生公钥和私钥对,使用ssh-copy-id将slave的公钥追加到master的authorized_keys文件中
ssh-copy-id -i master #将slave的公钥追加到master的authorized_keys文件中
登录master,将authorized_keys文件拷贝到slave1上,命令如下:
scp ~/.ssh/authorized_keys slave1:~/.ssh/ #拷贝到slave1上,需要输入用户名和密码