我是Docker的新手,正在尝试使用Docker Swarm构建Hadoop集群。我试图用docker compose来构建它,并且效果很好。但是,我想在将来添加其他服务,例如Hive,Spark,HBase,因此Swarm似乎是一个更好的主意。
当我尝试使用3.7版yaml文件运行它时,namenode和datanodes成功启动。但是当我访问Web UI时,它显示“数据节点”选项卡上没有可用的节点(“概述”选项卡上都没有)。似乎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文件从this repo更新到了3.7版,并试图在GCP上运行它。 here是我的仓库,以备您复制。
谢谢您的帮助!
答案 0 :(得分:0)
这似乎是与网络相关的问题,pod正在运行,但是它们未在您的Web GUI上注册,也许它们之间没有进行网络通信。检查您的内部防火墙规则和OS防火墙,并在特定端口上运行一些网络测试。