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
相关产品推荐
相关产品推荐

