【问题标题】:Cannot see Hadoop UI which is running inside docker container, in browser在浏览器中看不到在 docker 容器内运行的 Hadoop UI
【发布时间】:2019-03-31 11:49:45
【问题描述】:

我在三个不同的主机上有一个由三个容器组成的 Hadoop 集群;详情如下: 首先,我通过以下命令在我的三台主机(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

将三台主机连接在一起后,我不得不让 Master 和 Workers 之间的 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

在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

workers在三个容器中有这些内容:

  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 集群 UI?

任何帮助将不胜感激。

【问题讨论】:

    标签: docker hadoop weave


    【解决方案1】:

    看来你不是通过/opt/hadoop/sbin/start-yarn.sh启动YARN

    8088 端口用于 YARN Web UI,50070 用于查看 HDFS 状态。

    【讨论】:

    • 亲爱的@Newnius,我没有启动 YARN,因为我打算使用 Mesos 作为资源管理器。另外,当我运行 10.32.0.1:50070 时,它没有显示任何内容。
    • 你可以查看/opt/hadoop/logs/中的日志看看发生了什么
    • 我对 Weave 一无所知,我通常使用 docker swarm。不过你可以看一下github.com/newnius/Dockerfiles/tree/master/hadoop/2.7.4/config,我修改了这5个配置文件,让集群工作正常。
    • 好吧,那一定是编织的错,超出了我的范围。您可以搜索如何在 weave 网络中公开端口
    • 我只是启动另一个 socks5 代理来路由流量并通过服务名称访问,比如hadoop-master:50070 如果你想知道blog.newnius.com/…,这篇文章描述了如何做到这一点
    【解决方案2】:

    通过在 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>
    

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-01-05
      • 2018-09-07
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 2015-02-12
      相关资源
      最近更新 更多