您的位置:首页 > 运维架构

hadoop中的ssh无密码登录配置

2012-09-20 10:59 113 查看
目标:

在配置hadoop分布式安装过程中,需要配置ssh的无密码登录。在组建hadoop集群的时候,需要多台实体机进行通信(发送或者读取数据,namenode和datanode之间)就是借助ssh,在通信过程中如果需要操作人员频繁输入密码是不切实际的,所以需要ssh的无密码登录。

环境:

主机qiuchenl0,namenode,ubuntu12.04 操作系统,用户名qiuchenl
从机qiuchenl1,datanode,fedora14 操作系统,用户名qiuchenl

JDK1.7

Hadoop 0.20.205.0

HBase 0.90.5

配置:

首先请确保防火墙都处于关闭状态,具体命令是ufs disable。并确保安装ssh spenssh-server。

在主机qiuchenl0中执行以下命令:

cd ~/.ssh (进入用户目录下的隐藏文件.ssh)
ssh-keygen -t rsa (用rsa生成密钥)
cp id_rsa.pub authorized_keys (把公钥复制一份,并改名为authorized_keys,这步执行完,应该ssh localhost可以无密码登录本机了,可能第一次要密码)
scp authorized_keysqiuchenl@qiuchenl1:/home/qiuchenl/.ssh (把重命名后的公钥通过ssh提供的远程复制文件复制到从机qiuchenl1上面)
chmod 600 authorized_keys (更改公钥的权限,也需要在从机qiuchenl1中执行同样代码)
ssh qiuchenl1 (可以远程无密码登录qiuchenl1这台机子了,注意是ssh不是sudo ssh。第一次需要密码,以后不再需要密码)

注意:

在安装分布式hadoop过程中,需要将所有机子的用户名改为一样,如我的例子:qiuchenl。在linux下,有“主机名”和“用户名”之分。“主机名”相当与机子的IP,是该机子的唯一标识(可以用命令hostname来查看本机主机名),而一个操作系统可以有多个用户,每个用户都有用户名,如我的qiuchenl(root也是一个用户,只不过权限比较大)。

我们如果要访问其他主机,都是通过对方的ip来访问,比如ping 192.168.2.166.既然主机名也是标识,为什么不能ping qiuchenl0呢。因为当前机子步识别这个主机名,需要修改/etc/profile文件如下:


现在就把ip和主机名一一对应起来,也就可以ping qiuchenl0了。

下面回归正题,ssh远程登录其他机子,是登入那个机子的某个用户,所以在上面的第四步 我是把公钥文件拷贝到qiuchenl1主机下的qiuchenl用户,所以我只能远程控制该用户。再看上面第6步,要登录qiuchenl1的qiuchenl用户,命令应该是ssh qiuchenl@qiuchenl1,为什么是ssh qiuchenl1就可以呢。因为ssh qiuchenl1 会默认以当前主机的用户名(也就是qiuchenl0的qiuchenl)来远程登录。因为qiuchenl0和qiuchenl1两个机子的用户名都是qiuchenl,所以可以用ssh
qiuchenl1代替 ssh qiuchenl@qiuchenl1.如果qiuchenl1这台主机没有qiuchenl这个用户,那么ssh qiuchenl1就无法使用。

最后:

既然可以用ssh qiuchenl@qiuchenl1 代替ssh qiuchenl1,就没有必要让hadoop每台自己的用户名一样。这样想是不对的。因为ssh远程无密码登入可以用ssh qiuchenl@qiuchenl1。但是hadoop内部是不会这样智能处理的。所以在配置hadoop集群时,要把所有机子的用户名设置一样。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: