我在softlayer上有一个四节点的hadoop集群。主机(namenode)有一个用于外部访问的公共ip地址和一个用于集群访问的私有ip地址。从属节点(datanodes)有私有ip地址,我正试图连接到主节点,而不需要为每个从属节点分配公共ip地址。
我已经意识到 fs.defaultFS
到namenode的公共地址允许外部访问,除了namenode只侦听该地址以获取传入连接,而不侦听私有地址。所以我在datanode日志中得到connectiondensed异常,因为它们试图连接namenode的私有ip地址。
我认为解决方案可能是将公共和私有ip地址都设置为namenode,以便保留外部访问并允许从属节点连接。
有没有办法把这两个地址都绑定到namenode上,这样它就可以监听这两个地址?
编辑:hadoop版本2.4.1。
2条答案
按热度按时间zour9fqk1#
hdfs对多宿网络的支持,是在cloudera hdfs对多宿网络的支持上完成的。霍顿作品中的多归宿参数
此外,建议更改
dfs.namenode.rpc-bind-host
,dfs.namenode.servicerpc-bind-host
,dfs.namenode.http-bind-host
以及dfs.namenode.https-bind-host
默认情况下,hdfs端点指定为主机名或ip地址。在这两种情况下,hdfs守护程序都将绑定到一个ip地址,从而使守护程序无法从其他网络访问。解决方案是为服务器端点设置单独的设置,以强制将通配符ip地址绑定到dr\u any,即0.0.0.0。不要为这些设置提供端口号。
注意:首选在主/从配置文件中使用主机名而不是ip地址。
注意:在开始修改之前,请按以下步骤停止代理和服务器:
服务cloudera scm代理停止
服务cloudera scm服务器停止
如果集群配置了主namenodes和次namenodes,则需要在这两个节点中进行此修改。修改是用
server and agent stopped
完成并保存hdfs-site.xml
文件使用以下方法启动namenodes上的服务器和代理,以及datanodes上的代理(如果这样做也不会损害群集):服务cloudera scm代理启动
服务cloudera scm服务器启动
可以为ibm biginsights实施相同的解决方案:
ibmbiginsights:如何配置hadoop客户端端口8020以绑定到所有网络接口?
在cloudera中,hdfs配置中有一个名为
在
HDFS configuration
在cloudera中有一个属性叫做Bind NameNode to Wildcard Address
只需选中该框,它就会将服务绑定到0.0.0.0上then restart hdfs service
```On the Home > Status tab, click to the right of the service
name and select Restart. Click Start on the next screen to confirm.
When you see a Finished status, the service has restarted.
xzv2uavs2#
提问者把这个编辑成他的问题作为回答:
在hdfs-site.xml中,设置
dfs.namenode.rpc-bind-host
至0.0.0.0
hadoop将监听私有和公共网络接口,允许远程访问和datanode访问。