为啥 hdfs namenode 和 datanode 总是在随机端口上监听 0.0.0.0?

Posted

技术标签:

【中文标题】为啥 hdfs namenode 和 datanode 总是在随机端口上监听 0.0.0.0?【英文标题】:Why hdfs namenode and datanode both always listen on 0.0.0.0 at a random port?为什么 hdfs namenode 和 datanode 总是在随机端口上监听 0.0.0.0? 【发布时间】:2014-05-30 10:13:42 【问题描述】:

我今天安装了一个新的hadoop-2.2.0,我发现hdfs启动后(使用/sbin/start-dfs.sh),namenode和datanode总是在随机端口监听0.0.0.0?我在http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml 上找不到相关配置。

端口不是50070、50470、50090、50010、50020、50075、50475...等。 hdfs-default.xml中列出的,它只是一个随机端口。

8369 Jps
8109 DataNode
7936 NameNode

Namenode 监听以下内容:

tcp 0 0 0.0.0.0:46628 0.0.0.0:* LISTEN 7936/java        <==
tcp 0 0 10.173.130.119:9000 0.0.0.0:* LISTEN 7936/java
tcp 0 0 10.173.130.119:50070 0.0.0.0:* LISTEN 7936/java

Datanode 监听以下内容:

tcp 0 0 10.173.130.119:50020 0.0.0.0:* LISTEN 8109/java
tcp 0 0 0.0.0.0:35114 0.0.0.0:* LISTEN 8109/java        <==
tcp 0 0 10.173.130.119:50010 0.0.0.0:* LISTEN 8109/java
tcp 0 0 10.173.130.119:50075 0.0.0.0:* LISTEN 8109/java

感谢您的建议。

【问题讨论】:

有谁知道如何更改 0.0.0.0:random_port 的监听器?非常感谢! 【参考方案1】:

是的,它会在每次名称节点或数据节点重新启动时分配随机端口。但是,如果您观察在这种情况下(7936)在同一进程 id 上运行的所有 namenode 侦听器,并且在同一进程 id 即 8109 上运行 Datanode 侦听器。所以内部进程是相同的。

【讨论】:

感谢您的回答。我必须想办法配置或更改这种行为,因为我公司不允许任何人绑定 0.0.0.0。

以上是关于为啥 hdfs namenode 和 datanode 总是在随机端口上监听 0.0.0.0?的主要内容,如果未能解决你的问题,请参考以下文章

HDFS 架构

为啥 hdfs namenode 和 datanode 总是在随机端口上监听 0.0.0.0?

hadoop2.2的nodemanager无法启动

为啥hadoop启动后两个namenode都处于standby状态

HDFS设计之namenode和datanode

如何配置hdfs namenode的内存