【发布时间】:2018-08-13 12:18:35
【问题描述】:
我正在 EC2 服务器上设置 Hadoop 2.7.3 集群 - 1 个 NameNode、1 个辅助 NameNode 和 2 个 DataNode。
Hadoop 核心使用 SSH 与从节点通信以启动从节点上的进程。
- 我们是否需要在所有节点上为 hadoop 用户使用相同的 SSH 密钥?
- 将 NameNode 复制或添加到从节点 SSH 凭据的最佳实践/理想方式是什么?
【问题讨论】:
我正在 EC2 服务器上设置 Hadoop 2.7.3 集群 - 1 个 NameNode、1 个辅助 NameNode 和 2 个 DataNode。
Hadoop 核心使用 SSH 与从节点通信以启动从节点上的进程。
【问题讨论】:
我们是否需要在所有节点上为 hadoop 用户提供相同的 SSH 密钥?
将NameNode复制或添加到的最佳实践/理想方式是什么 从节点 SSH 凭证?
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
【讨论】:
chmod 700 /home/myuser/.sshchmod 644 /home/myuser/.ssh/authorized_keys