Hadoop 集群 - “hadoop”用户 ssh 通信
Posted
技术标签:
【中文标题】Hadoop 集群 - “hadoop”用户 ssh 通信【英文标题】:Hadoop Cluster - "hadoop" user ssh communication 【发布时间】:2018-08-13 12:18:35 【问题描述】:我正在 EC2 服务器上设置 Hadoop 2.7.3 集群 - 1 个 NameNode、1 个辅助 NameNode 和 2 个 DataNode。
Hadoop 核心使用 SSH 与从节点通信以启动从节点上的进程。
-
我们是否需要在所有节点上为 hadoop 用户使用相同的 SSH 密钥?
将 NameNode 复制或添加到从节点 SSH 凭据的最佳实践/理想方式是什么?
【问题讨论】:
【参考方案1】:相同的公钥需要在所有节点上我们是否需要在所有节点上为 hadoop 用户提供相同的 SSH 密钥?
将NameNode复制或添加到的最佳实践/理想方式是什么 从节点 SSH 凭证?
Per documentation:
Namenode:无密码 SSH
名称节点和数据节点之间的无密码 SSH。让我们 为此在名称节点上创建一个公私密钥对。
namenode> ssh-keygen
使用默认值 (
/home/ubuntu/.ssh/id_rsa
) 作为密钥位置和 输入一个空密码。
Datanodes:设置公钥
公钥保存在
/home/ubuntu/.ssh/id_rsa.pub
。我们要 将此文件从名称节点复制到每个数据节点并附加 内容到每个数据节点上的 /home/ubuntu/.ssh/authorized_keys。
datanode1> cat id_rsa.pub >> ~/.ssh/authorized_keys
datanode2> cat id_rsa.pub >> ~/.ssh/authorized_keys
datanode3> cat id_rsa.pub >> ~/.ssh/authorized_keys
Namenode:设置 SSH 配置
SSH 使用位于 ~/.ssh/config 的配置文件进行各种 参数。如下图所示进行设置。再次,替换每个节点的 HostName 参数的公共 DNS(例如,替换 使用用于 NameNode 的 EC2 公共 DNS)。
Host nnode
HostName <nnode>
User ubuntu
IdentityFile ~/.ssh/id_rsa
Host dnode1
HostName <dnode1>
User ubuntu
IdentityFile ~/.ssh/id_rsa
Host dnode2
HostName <dnode2>
User ubuntu
IdentityFile ~/.ssh/id_rsa
Host dnode3
HostName <dnode3>
User ubuntu
IdentityFile ~/.ssh/id_rsa
此时,验证无密码操作在每个节点上都有效 如下(第一次,你会得到一个警告,主机是 未知以及是否要连接到它。键入是并按回车键。 这一步只需要一次):
namenode> ssh nnode
namenode> ssh dnode1
namenode> ssh dnode2
namenode> ssh dnode3
【讨论】:
感谢佩特罗!我遵循了上述所有步骤,但是当我尝试从 NN SSH 到任何 DN 时,我收到以下错误:权限被拒绝(公钥)。我检查了 .ssh 文件夹下所有文件的权限是否正确。任何想法,这可能是什么问题? 确保 .ssh 文件夹权限也正确 正确权限示例:chmod 700 /home/myuser/.ssh
chmod 644 /home/myuser/.ssh/authorized_keys
谢谢!这些步骤在公共 EC2 AMI 中运行良好,但不适用于我公司构建的自定义 AMI,我正在检查此 AMI 的 SSH 配置。以上是关于Hadoop 集群 - “hadoop”用户 ssh 通信的主要内容,如果未能解决你的问题,请参考以下文章