You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HDFS文件下载请求URL主机名转IP配置问题咨询

HDFS WebUI下载URL自动使用IP的配置方案

问题背景

通过NameNode WebUI生成的HDFS文件下载URL使用主机名(如http://hadoop04:9864/webhdfs/v1/test/delta-contribs.jar?op=OPEN&namenoderpcaddress=000.000.000.000:9000&offset=0)时,请求返回400 Bad Request错误;将主机名替换为对应IP后,请求可正常执行。集群架构为1个NameNode、1个兼具SecondaryNameNode的DataNode、3个独立DataNode,共5台服务器。

当前相关配置

NameNode的hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>4</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/data/namenode</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>000.000.000.000:50070</value>
    </property>
</configuration>

兼具SecondaryNameNode的DataNode的hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>000.000.000.000:50090</value>
    </property>
    <property>
        <name>dfs.namenode.checkpoint.dir</name>
        <value>/usr/local/hadoop/data/secondarynamenode</value>
    </property>
    <property>
        <name>dfs.datanode.http-address</name>
        <value>000.000.000.000:9864</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>4</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

独立DataNode的hdfs-site.xml

<configuration>
    <property>
        <name>dfs.datanode.http-address</name>
        <value>000.000.000.000:9864</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/data/datanode</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>4</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

/etc/hosts配置

000.000.000.000 hadoop01
000.000.000.000 hadoop02
000.000.000.000 hadoop03
000.000.000.000 hadoop04
000.000.000.000 hadoop05

workers配置

000.000.000.000(hadoop02)
000.000.000.000(hadoop03)
000.000.000.000(hadoop04)
000.000.000.000(hadoop05)

解决配置步骤

1. 修改所有DataNode的网络绑定配置为实际IP

将每个DataNode的hdfs-site.xml中相关网络属性从000.000.000.000(实际为0.0.0.0)替换为节点的真实IP,以hadoop04为例:

<!-- 替换原有dfs.datanode.http-address,同时添加以下两个属性 -->
<property>
    <name>dfs.datanode.address</name>
    <value>hadoop04的实际IP:50010</value>
</property>
<property>
    <name>dfs.datanode.http-address</name>
    <value>hadoop04的实际IP:9864</value>
</property>
<property>
    <name>dfs.datanode.ipc.address</name>
    <value>hadoop04的实际IP:50020</value>
</property>

该配置强制DataNode绑定到指定IP,并向NameNode上报此IP,而非主机名。

2. 修正workers文件格式

将workers文件中的带注释格式修改为纯IP或主机名,每行一个:

hadoop02
hadoop03
hadoop04
hadoop05

或者直接使用IP:

hadoop02的实际IP
hadoop03的实际IP
hadoop04的实际IP
hadoop05的实际IP

3. 重启HDFS集群

执行以下命令重启所有HDFS服务,使配置生效:

stop-dfs.sh
start-dfs.sh

原理说明

问题根源是DataNode启动时绑定到0.0.0.0,会向NameNode上报自身主机名;若客户端(或WebUI访问者)无法解析该主机名,就会触发400错误。通过配置DataNode绑定并上报真实IP,NameNode生成下载URL时会直接使用IP地址,绕开主机名解析问题。

内容的提问来源于stack exchange,提问作者hi-inbeom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 06:25:23