Не удается увидеть пользовательский интерфейс Hadoop, который работает внутри контейнера докеров, в браузере

У меня есть кластер 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 беспарольным между Master и Workers. Поэтому я сделал там работы: В каждом хосте:

 ssh-keygen -t rsa

В мастере:

 ssh-copy-id [email protected]
 ssh-copy-id [email protected]
 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

workers содержали это содержимое в трех контейнерах:

  [email protected]
  [email protected]

core-site.xml содержит это содержимое в трех контейнерах:

  <configuration>
    <property>
       <name>fs.defaultFS</name>
       <value>hdfs://[email protected]: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 в браузере. Я запускаю этот URL, но он ничего не показывает:

    http://10.32.0.1:8088

Кстати, эти порты я уже выставил в docker-файле:

    EXPOSE 22 9000 8088 50070 50075 50030 50060

Не могли бы вы рассказать мне, как я могу увидеть пользовательский интерфейс кластера Hadoop в браузере?

Любая помощь будет оценена по достоинству.


person M_Gh    schedule 31.03.2019    source источник


Ответы (2)


Похоже, вы не запустили YARN с помощью /opt/hadoop/sbin/start-yarn.sh

порт 8088 предназначен для веб-интерфейса YARN, а порт 50070 — место, где вы можете увидеть статус HDFS.

person newnius    schedule 31.03.2019
comment
Уважаемый @Newnius, я не запускал YARN, потому что собираюсь использовать Mesos в качестве менеджера ресурсов. Кроме того, когда я запускаю 10.32.0.1:50070, ничего не отображается. - person M_Gh; 31.03.2019
comment
Вы можете проверить журналы в /opt/hadoop/logs/ и посмотреть, что произошло. - person newnius; 31.03.2019
comment
Кроме того, пропингуйте 10.32.0.1, чтобы узнать, можете ли вы подключиться к этому узлу. - person newnius; 31.03.2019
comment
Я могу пропинговать этот узел, и ssh запускается без проблем. - person M_Gh; 31.03.2019
comment
Уважаемый @Newnius, я видел лог, все в порядке. - person M_Gh; 31.03.2019
comment
Я думаю, это связано с IP сети Weave. Потому что, когда я запускаю контейнер с сетевым хостом, я вижу пользовательский интерфейс Hadoop, даже если он не показывает никаких узлов. - person M_Gh; 31.03.2019
comment
Я ничего не знаю о Weave и обычно использую docker swarm. Но вы можете взглянуть на github.com/newnius/Dockerfiles. /tree/master/hadoop/2.7.4/config , я изменил эти 5 файлов конфигурации, чтобы кластер работал нормально. - person newnius; 01.04.2019
comment
Уважаемый @Newnius, большое спасибо. Я проверю это. Поскольку мне приходится использовать Mesos и Marathon с Docker Compose, я не выбираю Docker Swarm. - person M_Gh; 01.04.2019
comment
Уважаемый @Newnius, я тестирую конфигурацию, которую вы использовали; но все же я не вижу никакого пользовательского интерфейса Hadoop в своем браузере. - person M_Gh; 06.04.2019
comment
Журналы не показывают никаких ошибок, за исключением: Журнал HTTP-запросов для http.requests.namenode не определен. - person M_Gh; 06.04.2019
comment
Можете ли вы свернуть 50070 внутри контейнера namenode? - person newnius; 06.04.2019
comment
Если вы имеете в виду это: curl 10.32.0.1:50070. да, я могу это сделать, и он показывает мне html-страницу с заголовком Администрирование Hadoop. - person M_Gh; 06.04.2019
comment
Что ж, тогда это, должно быть, вина плетения, которое выходит за рамки моей компетенции. Вы можете поискать, как открыть порты в сети weave. - person newnius; 06.04.2019
comment
спасибо за помощь. Не могли бы вы рассказать мне, как вы запускаете интерфейс Hadoop в Docker Swarm? какой именно адрес вы пишете в браузере? - person M_Gh; 06.04.2019
comment
Я просто запускаю другой прокси-сервер socks5 для маршрутизации трафика и посещения по имени службы, скажем, hadoop-master:50070 Это сообщение описывает, как это сделать, если вы хотите знать blog.newnius.com/ - person newnius; 06.04.2019

Я мог видеть узлы данных в браузере, добавляя эти строки в hdfs-site.xml.

<property>
     <name>dfs.http.address</name>
     <value>10.32.0.1:50070</value>
</property>

<property>
     <name>dfs.secondary.http.address</name>
     <value>10.32.0.1:50090</value>
</property>

Надеюсь, это было полезно.

person M_Gh    schedule 08.04.2019