hadoop - Hadoop 集群 - “hadoop”用户 ssh 通信
问题描述
我在 EC2 服务器上设置 Hadoop 2.7.3 集群 - 1 个 NameNode、1 个辅助 NameNode 和 2 个 DataNode。
Hadoop 核心使用 SSH 与从节点通信以启动从节点上的进程。
- 我们是否需要在所有节点上为 hadoop 用户提供相同的 SSH 密钥?
- 将 NameNode 复制或添加到从节点 SSH 凭据的最佳实践/理想方法是什么?
解决方案
我们是否需要在所有节点上为 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
推荐阅读
- mongodb - 如果没有,不要插入 mongo - scala
- ruby-on-rails - Rails6 搜索功能
- r - 在 ggplot2 中设置 x 轴限制 -> 添加另一条回归线时,x 轴上的数字消失
- android - Android Studio 在模拟器设计中出现错误无法正常工作
- java - java.lang.NullPointerException:将当前日期分配给变量时为空
- php - PHP 从正常运行时间获取日期
- log4j - 如何在空手道中禁用场景明智的日志生成
- c# - 我无法设置自定义属性 Unity PUN 2
- reactjs - 设置自动完成关闭不适用于“redux-form”中的字段
- sql - 根据另一个表从一个表中拆分时间条目