У меня есть кластер Hadoop из трех контейнеров на трех разных хостах; детали в следующем:
Сначала я устанавливаю «weave net» на трех моих хостах (150.20.11.133,150.20.11.136,150.20.11.157) с помощью этой команды:
sudo curl -L git.io/weave -o /usr/local/bin/weave
sudo chmod a+x /usr/local/bin/weave
eval $(weave env)
Затем я соединил три хоста через переплетение. Фактически я выполнил эту команду на трех хостах:
Например в 150.20.11.133:
Weave launch 150.20.11.136 150.20.11.157
После соединения трех хостов мне пришлось сделать SSH без пароля между Мастером и Рабочими. Поэтому у меня там работает:
На каждом хосте:
ssh-keygen -t rsa
В мастерской:
ssh-copy-id spark@172.28.10.136
ssh-copy-id spark@172.28.10.157
cat /home/user/.ssh/id_rsa.pub >> /home/user/.ssh/authorized_keys
В результате этого я могу запустить SSH без пароля от главного хоста к подчиненным.
На каждом хосте я собрал свой файл Docker, который имел конфигурацию для hadoop, и запустил его:
В Мастер:
docker run -v /home/user/.ssh:/root/.ssh --privileged -p 52222:22
-e WEAVE_CIDR=10.32.0.1/12 -ti my-hadoop
В раб. 1:
docker run -v /home/user/.ssh:/root/.ssh --privileged -p 52222:22
-e WEAVE_CIDR=10.32.0.2/12 -ti my-hadoop
В раб. 2:
docker run -v /home/user/.ssh:/root/.ssh --privileged -p 52222:22
-e WEAVE_CIDR=10.32.0.3/12 -ti my-hadoop
В каждом контейнере я запускал следующие команды:
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*
chown -R root ~/.ssh/
chgrp -R root ~/.ssh/
chmod -R 750 /root/.ssh/authorized_keys
В главном контейнере я запустил эту команду для запуска SSH localhost :
ssh-keygen -f "/root/.ssh/known_hosts" -R localhost
Кроме того, я запустил службу SSH в каждом узле контейнера:
service ssh restart
Итак, я могу запустить SSH из главного контейнера в ведомые без пароля.
Для настройки hadoop я сделал эти работы:
Первый в главном узле:
hadoop namenode -format
рабочие содержали это содержимое в трех контейнерах:
root@10.32.0.2
root@10.32.0.3
core-site.xml содержал это содержимое в трех контейнерах:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://root@10.32.0.1:9000</value>
</property>
</configuration>
hdfs-site.xml содержал это содержимое также в трех контейнерах:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>
Затем я запустил это в мастер-контейнере:
/opt/hadoop/sbin/start-dfs.sh
Когда я запускал jps в каждом контейнере, я получил следующие результаты:
В мастер-контейнере:
483 SecondaryNameNode
231 NameNode
747 Jps
На каждого работника:
117 DataNode
186 Jps
Проблема в том, что я хочу видеть Hadoop UI в браузере. Я запускаю этот URL, но он ничего не показывает:
http://10.32.0.1:8088
Кстати, я уже выставил эти порты в файле Docker:
EXPOSE 22 9000 8088 50070 50075 50030 50060
Подскажите, пожалуйста, как я могу увидеть пользовательский интерфейс кластера Hadoop в браузере?
Буду признателен за любую помощь.