我们的hadoop集群使用了两个接口。私人eth-1和公共。看起来当hadoopdatanode启动时,它会选择公共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
2条答案
按热度按时间km0tfn4u1#
hdfs-site.xml中有一个可以控制接口的设置,该接口被数据节点用作其ip地址。
dfs.datanode.dns.interface=数据节点应从中报告其ip地址的网络接口的名称。
设置为“默认”。如果要使用eth1,请将hdfs-site.xml中的此属性设置为:
引用“hadoop最终指南”一书:
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).
ie3xauqp2#
您可以尝试从apache网站引用这个属性吗(连接到其他数据节点进行数据传输时,datanodes是否应使用datanode主机名。)
检查其他datanode属性,如
dfs.datanode.address
根据hdfs属性,您可以找到解决方案还有一件事:检查hosts文件中的ip/域名Map。