首页 > 解决方案 > Hadoop 集群 - “hadoop”用户 ssh 通信

问题描述

我在 EC2 服务器上设置 Hadoop 2.7.3 集群 - 1 个 NameNode、1 个辅助 NameNode 和 2 个 DataNode。

Hadoop 核心使用 SSH 与从节点通信以启动从节点上的进程。

  1. 我们是否需要在所有节点上为 hadoop 用户提供相同的 SSH 密钥?
  2. 将 NameNode 复制或添加到从节点 SSH 凭据的最佳实践/理想方法是什么?

标签: hadoopsshhadoop2

解决方案


我们是否需要在所有节点上为 hadoop 用户提供相同的 SSH 密钥?

  • 相同的公钥需要在所有节点上

将 NameNode 复制或添加到从节点 SSH 凭据的最佳实践/理想方法是什么?

根据文档:

Namenode:无密码SSH

名称节点和数据节点之间的无密码 SSH。让我们为此在名称节点上创建一个公钥-私钥对。

namenode> ssh-keygen

使用默认 ( /home/ubuntu/.ssh/id_rsa) 作为密钥位置,然后按 Enter 键输入空密码。

Datanodes:设置公钥

公钥保存在/home/ubuntu/.ssh/id_rsa.pub. 我们需要将此文件从namenode复制到每个数据节点,并将内容附加到每个数据节点上的/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 的配置文件用于各种参数。如下图所示进行设置。同样,用每个节点的公共 DNS 替换 HostName 参数(例如,用 EC2 公共 DNS 替换 NameNode)。

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

此时,验证无密码操作在每个节点上工作如下(第一次,您会收到主机未知以及是否要连接的警告。输入yes并回车。需要此步骤只有一次):

namenode> ssh nnode
namenode> ssh dnode1
namenode> ssh dnode2
namenode> ssh dnode3

推荐阅读