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

MacOS环境使用docker-compose启动Hadoop出现启动崩溃报错问题

问题原因

你用到的prestodb/hdp2.6-hive镜像内置了默认的Hadoop配置,其中yarn.resourcemanager.address参数的默认值就是hadoop-master:8031,你仅挂载了自定义的core-site.xml,没有覆盖YARN相关配置,所以服务启动时会读取该默认值。
此外Docker Desktop for Mac 3.x及之后的版本调整了容器内hosts生成逻辑:未显式指定hostname的容器,不会自动将容器名称/自定义主机名绑定到容器网卡地址,导致YARN服务无法解析hadoop-master对应的IP,触发报错。

解决方案

方案1(最简,无需修改Hadoop配置)

直接在docker-compose的hadoop服务配置中显式指定hostname为hadoop-master,即可让容器内自动生成对应的hosts解析条目:

hadoop:
    image: prestodb/hdp2.6-hive
    container_name: hadoop
    hostname: hadoop-master # 新增该行配置
    volumes:
      - ./hadoop/core-site.xml:/etc/hadoop/conf/core-site.xml
    mem_limit: 2048m

修改后重启容器即可正常启动YARN服务。

方案2(自定义YARN配置)

如果不想使用hadoop-master作为主机名,可以新增自定义的yarn-site.xml配置文件,覆盖相关参数:

<configuration>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>0.0.0.0:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>0.0.0.0:8031</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
    </property>
</configuration>

然后将该文件挂载到容器内的对应路径:

hadoop:
    image: prestodb/hdp2.6-hive
    container_name: hadoop
    volumes:
      - ./hadoop/core-site.xml:/etc/hadoop/conf/core-site.xml
      - ./hadoop/yarn-site.xml:/etc/hadoop/conf/yarn-site.xml # 新增该行
    mem_limit: 2048m

验证方法

进入运行中的Hadoop容器执行以下命令验证配置生效:

  • 查看主机名:hostname
  • 查看hosts解析:cat /etc/hosts
  • 验证端口连通性:nc -zv localhost 8031

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:12:00