我是docker的新手,正在尝试用DockerSwarm构建hadoop集群。我试着用docker compose来构建它,效果非常好。不过,我想在将来添加其他服务,如hive、spark、hbase,所以swarm似乎是一个更好的主意。
当我尝试用3.7版yaml文件运行它时,namenode和datanodes成功启动。但是当我访问webui时,它显示在“datanodes”选项卡上没有可用的节点(在“overview”选项卡上也没有)。似乎datanodes无法连接到namenode。我已经检查了每个节点的端口 netstat -tuplen
7946和4789工作正常。
以下是我使用的yaml文件:
version: "3.7"
services:
namenode:
image: flokkr/hadoop:latest
hostname: namenode
networks:
- hbase
command: ["hdfs","namenode"]
ports:
- target: 50070
published: 50070
- target: 9870
published: 9870
environment:
- NAMENODE_INIT=hdfs dfs -chmod 777 /
- ENSURE_NAMENODE_DIR=/tmp/hadoop-hadoop/dfs/name
env_file:
- ./compose-config
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: on-failure
placement:
constraints:
- node.role == manager
datanode:
image: flokkr/hadoop:latest
networks:
- hbase
command: ["hdfs","datanode"]
env_file:
- ./compose-config
deploy:
mode: global
restart_policy:
condition: on-failure
volumes:
namenode:
datanode:
networks:
hbase:
name: hbase
基本上,我只是将yaml文件从这个repo更新到3.7版本,并尝试在gcp上运行它。这是我的回购协议,以防你想复制这个案子。
这是manager节点的端口状态:
工作节点:
谢谢你的帮助!
1条答案
按热度按时间67up9zun1#
这似乎是一个网络相关的问题,豆荚正在运行,但他们没有注册在您的网络图形用户界面上,可能是网络通信,它没有达到他们之间。检查内部防火墙规则和操作系统防火墙,在特定端口上运行一些网络测试。