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

Mac M1 Docker Hadoop集群WebHDFS上传文件遇域名解析错误求助

解决WebHDFS上传时Docker容器主机名无法解析的问题

问题根源

你遇到的curl: (6) Could not resolve host: fcb6de72d72d错误,核心原因是Docker集群内的DataNode返回的重定向地址用了容器内部的主机名,而你的Mac本地DNS无法识别这个名字对应的IP,导致解析失败。

快速临时解决方法

直接把curl命令里的容器主机名替换成DataNode容器的实际IP:

  1. 先查询DataNode容器的IP:
    docker inspect fcb6de72d72d | grep -i "ipaddress"
    
    输出会类似"IPAddress": "172.17.0.3",记下这个IP地址。
  2. 修改curl命令,将fcb6de72d72d替换为刚才拿到的IP:
    curl -i -X PUT -T file.txt "http://172.17.0.3:9864/webhdfs/v1/root/EMSI/file.txt?op=CREATE&namenoderpcaddress=namenode:9000&createflag=&createparent=true&overwrite=false"
    
    执行修改后的命令即可完成上传。

长期根治方案(修改Hadoop配置)

如果不想每次都手动替换IP,可以通过修改Hadoop配置让WebHDFS返回宿主机可访问的地址:

  1. 进入Hadoop集群的配置目录(通常为$HADOOP_HOME/etc/hadoop),编辑hdfs-site.xml,添加以下配置项:
    <property>
        <name>dfs.datanode.use.datanode.hostname</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>true</value>
    </property>
    
  2. 重启所有Hadoop节点(NameNode、DataNode)使配置生效。
  3. 在Mac本地的/etc/hosts文件中添加DataNode容器IP与主机名的映射,示例:
    172.17.0.3  fcb6de72d72d
    
    完成后本地就能直接解析容器主机名,后续调用WebHDFS时自动跟随重定向也不会报错。

额外技巧:让curl自动处理重定向

配置好hosts映射后,可直接用-L参数让curl自动处理307重定向,无需手动复制Location地址:

curl -i -L -X PUT -T file.txt "http://<namenode-host>:50070/webhdfs/v1/root/EMSI/file.txt?op=CREATE&createparent=true&overwrite=false"

(将<namenode-host>替换为你集群NameNode的实际访问地址)

内容的提问来源于stack exchange,提问作者Kate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:02:12