hadoop - ssh:无法解析主机名。名称或服务未知

标签 hadoop ssh amazon-web-services amazon-ec2 hosts

我正在尝试在 2 节点集群上的亚马逊实例上设置 hadoop。每个实例都有一个公共(public) DNS,我用它来引用它们。因此,在两台机器上的/etc/hosts 文件中,我附加如下行:

{public dns of 1st instance} node1
{public dns of 2st instance} node2

我还可以通过简单地执行以下操作从另一个实例 ssh 进入每个实例:

ssh {public dns of the other instance}

在第一个实例文件的 hadoop/conf/slaves 中我有:

localhost
node2

当我启动脚本 bin/start-dfs.sh 时 它能够在主节点上启动名称节点、数据节点和辅助名称节点,但它显示:

node2: ssh: Could not resolve hostname node2: Name or service not known

如果我尝试打印出来的结果是一样的:

ssh node2

我想问题是如何告诉它将 node2 与第二个实例的公共(public) dns 相关联。追加一下还不够吗

{public dns of 2st instance} node2

到/etc/hosts 文件的行? 我必须重新启动实例吗?

最佳答案

当您没有与 IP 地址关联的真实 DNS 时,

/etc/hosts 的作用类似于本地 DNS。

如果您可以直接在从属文件和主文件中使用 {public dns of 1st instance},您真的需要 {public dns of 1st instance} node1 映射吗?

此外,最好使用亚马逊实例的私有(private)IP地址,而不是使用公共(public)IP地址。您可以在每个实例的终端中执行 ifconfig 并确定它们的私有(private) IP 地址(如果有)。他们可能基本上会以 10.x.x.x/172.x.x.x/192.x.x.x 开头?然后,您可以将它们映射到每个亚马逊实例的/etc/hosts 中。

因此,每台计算机中的/etc/hosts 应该类似于 -

机器 1:

{IP_address_1st_instance} node1
{IP_address_2st_instance} node2

机器2:

{IP_address_1st_instance} node1
{IP_address_2st_instance} node2

而且,这是为了让 Amazon 实例(机器)能够相互解析(如果您无论如何都计划映射它们)。

关于hadoop - ssh:无法解析主机名。名称或服务未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18134231/

相关文章:

hadoop - 如何在 java 中使用 eclipse 在 Windows 上本地运行 Spark

unix - SSH key 映射到用户

python - SSH - 带有 paramiko 问题的 Python

amazon-web-services - 如果所需的容器数量大于 1,则 ECS 服务处于挂起状态

amazon-web-services - 有没有办法将普通的AWS Lambda函数容器化?

amazon-web-services - AWS 上的金丝雀发布和蓝绿部署

Hadoop - 输入目录问题

hadoop - 如何使用配置单元读取自定义的 hdfs 文件

java - 如何修复 java.net.ConnectException : Connection refused in Storm

java - 如何通过EC2 SSH隧道从本地JAVA程序连接到RDS