#docker #mapreduce #cluster-computing
#docker #mapreduce #кластерные вычисления
Вопрос:
Я могу использовать один узел для решения проблемы уменьшения карты с помощью docker. Но теперь для многоузлового мне нужно подключиться к другому компьютеру. Как я могу получить IP-адреса других компьютеров, которые являются моими подчиненными узлами внутри контейнера docker? Насколько я знаю, IP-адрес на компьютере docker одинаков для каждого компьютера: 192.168.99.100
Комментарии:
1. Возможно, вы захотите обновить свой заголовок, чтобы лучше отразить ваш актуальный вопрос. У вас будет больше шансов получить ответ.
2. Добро пожаловать в StackOverflow! Название и ваш вопрос, похоже, не совпадают. Вы пытаетесь определить IP-адреса?
Ответ №1:
Не рекомендуется запускать docker в Windows, и изображение sequenceiq/hadoop-docker
не очень хорошо разработано для нескольких узлов. Вам лучше развернуть свой кластер в Linux.
Для разрешения IP-адресов других контейнеров используйте имя хоста, а не ip (поскольку они могут измениться, если не указаны). Один из способов сделать это — использовать docker swarm.
Вот несколько простых шагов по развертыванию распределенного кластера Hadoop.
Прежде всего, вам нужно создать рой docker с помощью 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
А затем отформатируйте namenode, запустите 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 (для производственного использования, включая отображение пользовательского интерфейса и HDSF за пределами swarm)
Комментарии:
1. Привет, спасибо, что ответили мне. Итак, если мой docker toolbox запущен в виртуализированном экземпляре Linux, например, внутри виртуального окна с окном, поскольку хост-ОС также не может? Разве вы не имели в виду, что я должен установить Linux в virtual box, а затем установить docker?
2. Привет, какие изображения вы можете порекомендовать для решения проблемы уменьшения карты hadoop в многоузловом кластере? заранее спасибо
3. Вы можете сформировать кластер в virtual box, но вам необходимо настроить сеть, чтобы сделать их доступными / в одной сети (адаптер NAT).
4. cloud.docker.com/u/newnius/repository/docker/newnius/hadoop Вы можете использовать этот образ, который изначально создан для использования в кластере.
5. Спасибо, разве не нормально, что я продолжаю использовать свой docker toolbox, работающий в виртуализированном Linux, вместо установки Linux?