Не рекомендуется запускать 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 за пределами роя)