我们为hadoop集群使用了2个接口。私人道德-1和公众。看起来当hadoop datanode启动时,它会选择公共IP地址而不是私有IP地址。当我查看hadoop-cmf-hdfs-DATANODE-hostname.log.out时,它会显示
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = hostname.public.net/208.x.x.x
而应该说
STARTUP_MSG: Starting DataNode
STARTUP_MSG: host = hostname-eth1.private.net/192.168.x.x
答案 0 :(得分:1)
hdfs-site.xml中有一个设置,它可以控制数据节点用作其IP地址的接口。
dfs.datanode.dns.interface =数据节点应从中报告其IP地址的网络接口的名称。
这被设置为“默认”。如果要使用eth1,请在hdfs-site.xml中将此属性设置为:
<property>
<name>dfs.datanode.dns.interface</name>
<value>eth1</value>
</property>
引用“Hadoop The Definitive Guide”一书:
There is also a setting for controlling which network interfaces the datanodes use as their IP addresses (for HTTP and RPC servers). The relevant property is
dfs.datanode.dns.interface, which is set to default to use the default network
interface. You can set this explicitly to report the address of a particular interface (eth0, for example).
答案 1 :(得分:0)
您可以尝试引用apache web site引用的此属性吗? ( 连接到其他数据节点进行数据传输时,数据节点是否应使用datanode主机名。 )
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
<description>Whether datanodes should use datanode hostnames when
connecting to other datanodes for data transfer.
</description>
</property>
根据hdfs properties检查dfs.datanode.address
等其他datanode属性,您可以找到解决方案
还有一件事:检查主机文件中的IP /域名映射。