2

我正在尝试在我的 amazon 实例上的 2 节点集群上设置 hadoop。每个实例都有一个公共 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 时,它能够在 master 上启动 namenode、datanode 和辅助 namenode,但它说:

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

如果我尝试,它会打印出来:

ssh node2

我想问题是我如何告诉它将 node2 与第二个实例的公共 dns 相关联。是不是追加

{public dns of 2st instance} node2

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

4

1 回答 1

2

/etc/hosts当您没有与 IP 地址关联的真实 DNS 时,有点像本地 DNS。

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

此外,最好使用亚马逊实例的私有 IP 地址,而不是使用公共 IP 地址。您可以ifconfig在每个实例的终端中进行操作,并确定它们的私有 IP 地址(如果有)。他们可能基本上会以 10.xxx/172.xxx/192.xxx 开头?然后,您可能可以将它们映射到每个亚马逊实例的 /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

而且,如果您打算映射它们,那么亚马逊实例(机器)可以相互解决。

于 2013-08-08T19:23:15.177 回答