我能够使用单个节点来解决使用docker的地图缩小问题。但是现在对于多节点,我需要链接到另一台PC。如何获取docker容器中作为从节点的其他计算机的IP地址?据我所知,Docker计算机中的IP地址对于每台计算机都是相同的:192.168.99.100
答案 0 :(得分:0)
不建议在Windows上运行docker,并且映像sequenceiq/hadoop-docker
不适用于多节点。您最好在Linux上部署集群。
要解析其他容器的ip,请使用主机名而不是ip(因为如果未指定,它们可能会更改)。一种方法是使用docker swarm。
这是部署分布式Hadoop集群的一些简单步骤。
首先,您需要通过主节点上的docker swarm init
创建一个docker swarm,并通过应对和执行命令将其他节点添加到swarm。
然后,通过docker network create --driver overlay swarm-net
创建覆盖网络。
要建立一个具有一个主机和三个从机的集群。
docker service create \
--name hadoop-master \
--network swarm-net \
--hostname hadoop-master \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop:2.7.4
docker service create \
--name hadoop-slave1 \
--network swarm-net \
--hostname hadoop-slave1 \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop:2.7.4
docker service create \
--name hadoop-slave2 \
--network swarm-net \
--hostname hadoop-slave2 \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop:2.7.4
docker service create \
--name hadoop-slave3 \
--network swarm-net \
--hostname hadoop-slave3 \
--replicas 1 \
--endpoint-mode dnsrr \
newnius/hadoop:2.7.4
然后格式化名称节点,启动YARN。
# stop all Hadoop processes
sbin/stop-yarn.sh
sbin/stop-dfs.sh
# format namenode
bin/hadoop namenode -format
# start yarn and dfs nodes
sbin/start-dfs.sh
sbin/start-yarn.sh
但是请注意,这样一来,您将无法直接浏览WebUI。
您可以在此处找到完整的文档
https://blog.newnius.com/how-to-quickly-setup-a-hadoop-cluster-in-docker.html(用于实验)
https://blog.newnius.com/setup-distributed-hadoop-cluster-with-docker-step-by-step.html(用于生产用途,包括将UI和HDSF暴露在群体之外)