构建Hadoop集群-SSH配置

Hadoop控制脚本(并非守护进程)依赖SSH来执行针对整个集群的操作。例如,某个脚本能够终止并重启集群中的所有守护进程。值得注意的是,控制脚本并非唯一途径,用户可以利用其他方法执行集群范围的操作(例如分布式shell)。

为了支持无缝式工作,SSH安装好之后,需要允许Hadoop用户无需键入密码即可登录集群内的机器。最简单的方法是创建一个公钥/私钥对,存放在NFS之中,让整个集群共享该密钥对。

首先,以某个hadoop用户账号登录后,键入一下指令来产生一个RSA密钥对。

%ssh-keygen-trsa-f~/.ssh/id_rsa

尽管期望无密码登录,但无口令的密钥并不是一个好的选择(运行在本地伪分布集群上时,倒也不妨使用一个空口令)。因此,当系统提示输入口令时,用户最好指定一个口令。可以使用ssh-agent以免为每个连接逐一输入密钥。

私钥放在由-f选项指定的文件中,例如~/.ssh/id_rsa。存放公钥的文件名称与私钥类型类似,但是以“.pub”作为后缀,例如~/.ssh/id_rsa.pub。

接下来,需确保公钥存放在用户打算连接的所有机器的~.ssh/authorized_keys文件中。如果hadoop用户的home目录是在NFS文件系统中(如前所述),则可以键入一下指令在整个集群内共享密钥:

%cat~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys

如果home目录并没有通过NFS共享,则需要利用其他方法共享公钥(比如:ssh-copy-id)。

测试是否可以从主机器SSH到工作机器。若可以,则表明ssh-agent正在运行。再运行ssh-add来存储口令。这样的话,用户即可不用再输入口令就能ssh到一台工作机器。

相关推荐