HBase不睡觉书
上QQ阅读APP看书,第一时间看更新

2.3 配置SSH免密登录

已经装过Hadoop的用户可以跳过这个步骤。

请先确保五台机器之间有一个用户可以免密登录到其他的机器上。假设你已经装完了Hadoop,那么你应该已经有一个用户可以用于免密登录的,否则,估计你也装不成Hadoop。如果没有这样一个用户的话,你需要先配置它。

这个用户的要求是:

  • 可以通过sudo命令来以root权限运行命令。
  • 可以不加密码,直接用SSH在别的机器上执行命令。
  • 所有机器上都要有这个用户,名字和权限完全相同。
  • 该用户最好不要是root,当然用root也可以,只是生产环境没人这么干,太危险了。
  • 如果你不知道怎么取名,就跟我一样用hadoop这个用户名吧。

具体如何建立该用户并且配置上SSH不在本书的讨论范围中,不同的机器有不同的做法,大家可以自行查阅资料找到属于自己操作系统的方法。

本书使用的用户名是hadoop。我的操作系统是CentOS6.5,以下是我操作的具体步骤:

1.登录到在nn01上

(1)切换到root用户,然后建立hadoop用户。

(2)添加hadoop到sudoers(以下命令以root用户执行)列表。

然后用vi编辑器打开sudoers文件,在里面添加一句话:

现在你可以用whoami命令测试hadoop用户是否拥有sudo的权限:

(3)生成rsa密钥:

采用默认配置,即默认目录和空密码。

然后检查home/hadoop/.ssh目录,可以看到id_rsa.pub文件,这个就是我们这台机器中hadoop用户的公钥,我们要把这个文件传输到host2上。

(4)传输公钥到host2:

中间会问你

记得一定要回答yes。

2.nn02上

接下来用hadoop用户SSH到nn02上执行以下步骤。

(1)确认是否存在~/.ssh目录,如果不存在就创建一个。

分配权限的时候注意一点:网上有的文章提到做SSH免密时给.ssh以及以下的文件夹分配权限使用了以下命令:

如果你用chmod-R 600~/.ssh,那么你会把.ssh文件夹内的文件以及.ssh文件夹本身的权限都改为600,这么做以后连cd~/.ssh这样简单的命令都做不了了,因为cd命令是需要x权限的,所以,正确的做法是给.ssh文件夹赋予700权限:

(2)把我们刚刚传输过来的公钥的信息复制到authorized_keys内:

注意authorized_key的权限:如果authorized_keys之前没有,那么cat命令创建出来的 authorized_keys文件默认权限是664,你需要修改权限为600,否则由于这个文件的权限过大,在SSH的时候还是会要求你输入密码。

回到nn01去测试:

会发现你已经可以直接登录到nn02上,而不需要输入用户名和密码。

之后,把这个步骤在其他机器上也做一遍,确保机器之间都可以互相SSH,包括自己都可以SSH自己。比较简单的方式就是把5台机器的id_rsa.pub文件放到一起打个包,然后传输到所有机器上,最后用cat追加进authorized_keys文件里面去。

磨刀不误砍柴工:测试的时间永远比事后解决问题的时间更划算。

做完这些后,请仔仔细细地把所有机器都测试一遍,如果嫌手动输入麻烦就写一段脚本来测试。无论如何,不要吝啬你的测试时间。现在可能只是多花几分钟来把测试的覆盖率提高到100%。如果为了节省时间,不执行完成测试,导致后面出问题,到时候查日志、上网搜索、尝试的时间可能要几个小时甚至几天。所以,无论是搭建环境,写代码甚至于生活中的琐事,我都认为更多的测试时间总归是值得的。