我正在与我的 namenode 和 AWS 上的两个 datanode 建立 SSH 连接。当我尝试将配置和我的.pem
文件从 namenode 复制到 datanode 时,出现以下错误:
Could not resolve hostname datanode1: Name or service not known
我的命令是:
scp ~/.ssh/hadoop-cluster-key.pem ~/.ssh/config datanode1:~/ssh
我的配置文件是
Host namenode
HostName ec2-18-XXXXXXXXXXXXXXX-2.compute.amazonaws.com
User ubuntu
IdentifyFile ~/.ssh/hadoop-cluster-key.pem
Host datanode1
HostName ec2-18-XXXXXXXXXXXXXXX-2.compute.amazonaws.com
User ubuntu
IdentifyFile ~/.ssh/hadoop-cluster-key.pem
Host datanode2
HostName ec2-18-XXXXXXXXXXXXXXX-2.compute.amazonaws.com
User ubuntu
IdentifyFile ~/.ssh/hadoop-cluster-key.pem
请帮我修复这个问题。
答案1
SSH 不会读取您的 Hadoop 配置文件中的主机名。
将“namenode”、“datanode1”和“datanode2”放入每台服务器上的 /etc hosts 文件中。现在这些主机名将解析。
/etc/hosts 文件将如下所示(添加的内容)。将 IP 地址更改为您的 VPC私人的每个 EC2 实例的 IP 地址。
10.0.0.10 namenode
10.0.0.11 datanode1
10.0.0.12 datanode2
注意:对于生产系统,我将使用带有私有区域的 Route 53 进行 VPC 内部的 DNS 解析。
注意:仅将 .pem 文件复制到.ssh
每台服务器上的目录不足以启用“无密码 SSH”。您还需要从密钥对(.pem 文件)中提取公钥并将其添加到.ssh/authorized_keys
。
以下命令将提取公钥。然后将公钥的内容“附加”到 .ssh/authorized_keys。
ssh-keygen -y -f ~/.ssh/hadoop-cluster-key.pem > ~/.ssh/hadoop-cluster-key.pub
cat ~/.ssh/hadoop-cluster-key.pub >> ~/.ssh/authorized_keys
您需要在集群的每个节点上重复第二个命令。