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

时间:2013-08-08 19:15:22

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

我试图在我的亚马逊实例上,在2节点集群上设置hadoop。每个实例都有一个公共dns,我用它来引用它们。所以在两台机器上的/ etc / hosts文件中我都附加了这样的行:

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

我也可以通过以下方式从另一个实例中进入每个实例:

ssh {public dns of the other instance}

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

localhost
node2

当我启动脚本bin / start-dfs.sh时 它能够在master上启动namenode,datanode和secondary 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文件的行? 我是否必须重启实例?

1 个答案:

答案 0 :(得分:2)

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

/etc/hosts类似于本地DNS。

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

此外,最好使用亚马逊实例的私有IP地址,而不是使用公共IP地址。您可以在每个实例的终端中执行ifconfig并确定其私有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

并且,如果您无论如何计划映射它们,那么亚马逊实例(机器)可以相互解决。