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

#docker #hadoop #weave

#docker #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)
  

Затем я соединил три хоста вместе через weave. Фактически, я запустил эту команду на трех хостах:

Например, в 150.20.11.133:

  Weave launch 150.20.11.136 150.20.11.157
  

После соединения трех хостов вместе мне пришлось сделать SSH без пароля между мастером и рабочими. Следовательно, я сделал там работы:
На каждом хосте:

  ssh-keygen -t rsa
  

В master:

  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, затем я запустил это:

В Master:

  docker run -v /home/user/.ssh:/root/.ssh --privileged -p 52222:22 
 -e WEAVE_CIDR=10.32.0.1/12 -ti my-hadoop
  

В slave1:

  docker run -v /home/user/.ssh:/root/.ssh --privileged -p 52222:22 
 -e WEAVE_CIDR=10.32.0.2/12 -ti my-hadoop
  

В slave2:

  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 в браузере. Я запускаю этот URL, но он ничего не показывает:

     http://10.32.0.1:8088
  

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

     EXPOSE 22 9000 8088 50070 50075 50030 50060
  

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

Любая помощь была бы оценена.

Ответ №1:

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

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

Комментарии:

1. Дорогой @Newnius, я не запускал YARN , потому что я собираюсь использовать Mesos для диспетчера ресурсов. Кроме того, когда я запускаю 10.32.0.1: 50070 , он ничего не показывает.

2. Вы можете проверить журналы в /opt /hadoop/logs / посмотреть, что произошло

3. Я ничего не знаю о Weave и обычно использую docker swarm. Но вы можете взглянуть на github.com/newnius/Dockerfiles/tree/master/hadoop/2.7.4/config , Я изменил эти 5 файлов конфигурации, чтобы кластер работал нормально.

4. Ну, тогда это должно быть ошибкой weave, которая выходит за рамки моей компетенции. Вы можете найти, как предоставить доступ к портам в сети weave

5. Я просто запускаю другой прокси socks5 для маршрутизации трафика и посещаю по имени службы, скажем, hadoop-master: 50070 В этом посте описывается, как это сделать, если вы хотите знать блог. newnius.com / …

Ответ №2:

Я мог видеть datanodes в браузере, добавив эти строки в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>
  

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