如何将Hadoop工具箱与hadoop流一起使用以解决多节点集群的地图缩减

时间:2019-04-03 21:31:51

标签: docker mapreduce cluster-computing

我能够使用单个节点来解决使用docker的地图缩小问题。但是现在对于多节点,我需要链接到另一台PC。如何获取docker容器中作为从节点的其他计算机的IP地址?据我所知,Docker计算机中的IP地址对于每台计算机都是相同的:192.168.99.100

1 个答案:

答案 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暴露在群体之外)