Как использовать docker toolbox с потоковой передачей hadoop для решения проблемы уменьшения карты с помощью многоузлового кластера

#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?