Как использовать докерский инструментарий с потоковой передачей hadoop, чтобы решить проблему уменьшения карты с помощью многоузлового кластера - PullRequest
0 голосов
/ 04 апреля 2019

Я могу использовать один узел для решения проблемы уменьшения карты с помощью докера. Но теперь для мультиузла мне нужно связать с другим ПК. Как я могу получить IP-адрес других компьютеров, которые являются моими подчиненными узлами внутри док-контейнера? Насколько я знаю, IP-адрес в док-машине одинаков для всех компьютеров: 192.168.99.100

1 Ответ

0 голосов
/ 04 апреля 2019

Не рекомендуется запускать Docker в Windows, а образ sequenceiq/hadoop-docker не предназначен для работы с несколькими узлами. Вам лучше развернуть свой кластер в Linux.

Чтобы разрешить ip других контейнеров, используйте имя хоста, а не ip (так как они могут измениться, если не указан). Один из способов сделать это - использовать Docker Swarm.

Вот несколько простых шагов для развертывания распределенного кластера Hadoop.

Прежде всего, вам нужно создать рой докеров с помощью docker swarm init в главном узле и добавить другие узлы в рой, скопировав и выполнив команду.

Затем создайте оверлейную сеть с помощью 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

Но учтите, что таким образом вы не можете просматривать веб-интерфейс напрямую.

Полный документ можно найти здесь

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 (для производственного использования, включая экспонирование пользовательского интерфейса и HDSF за пределами роя)

...