我正在尝试在我的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时,它可以启动主节点上的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条答案
按热度按时间gcuhipw91#
/etc/hosts
有点像一个本地dns,当你没有一个ip地址相关联的真正的dns。你真的需要一个
{public dns of 1st instance} node1
是否可以直接在从属和主文件中使用{public dns of 1st instance}?此外,最好使用amazon示例的私有ip地址,而不是使用公共ip地址。你可以做一个
ifconfig
在每个示例的终端中,确定它们的私有ip地址(如果有的话)。它们基本上是从10.x.x.x/172.x.x.x/192.x.x.x开始的?然后,您可能可以在每个amazon示例的/etc/hosts中Map这些内容。因此,每台机器中的/etc/主机应该类似于-
机器-1:
机器-2:
而且,这是为了让amazon示例(机器)能够相互解析,如果您打算Map它们的话。