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/.sshchmod 644 /home/myuser/.ssh/authorized_keys 谢谢!这些步骤在公共 EC2 AMI 中运行良好,但不适用于我公司构建的自定义 AMI,我正在检查此 AMI 的 SSH 配置。

以上是关于Hadoop 集群 - “hadoop”用户 ssh 通信的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop 集群 - “hadoop”用户 ssh 通信

hadoop集群安装

Hadoop-3.1.3高可用集群部署

vmware搭建hadoop集群完整过程笔记

Ubunutu20.04搭建Hadoop集群

Hadoop集群配置