本文为您介绍如何通过SSH隧道方式访问开源组件的Web UI。

背景信息

在E-MapReduce集群中,为保证集群安全,Hadoop、Spark和Flink等开源组件的Web UI的端口均未对外开放。您可以通过控制台的方式访问Web UI,也可以通过在本地服务器上建立SSH隧道以端口转发的方式来访问Web UI,端口转发方式包括端口动态转发和本地端口转发两种。

如果您需要通过控制台的方式访问Web UI时,请参见访问链接与端口

前提条件

  • 已创建集群,详情请参见创建集群
  • 确保本地服务器与集群主节点网络连通。您可以在创建集群时打开挂载公网开关,或者在集群创建好之后在ECS控制台上为主节点挂载公网,为主节点ECS实例分配固定公网IP或EIP,详情请参见绑定弹性网卡

获取主节点的公网IP地址

  1. 进入集群详情页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击目标集群所在行的详情
  2. 集群基础信息页面的主机信息区域,获取主节点的公网IP地址。
    IP

获取主节点的主机名

  1. 进入集群详情页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击目标集群所在行的详情
  2. 在左侧导航栏,单击主机列表
  3. 主机列表页面,查看主节点公网IP地址对应的主机名
    主节点IP地址请参见获取主节点的公网IP地址header

使用动态端口转发方式

创建从本地服务器开放端口到集群主节点的SSH隧道,并运行侦听该端口的本地SOCKS代理服务器,端口的数据会由SSH隧道转发到集群主节点。

  1. 创建SSH隧道。
    • 密钥方式
      ssh -i <密钥文件路径> -N -D 8157 root@<主节点公网IP地址>
    • 密码方式
      ssh -N -D 8157 root@<主节点公网IP地址>
    相关参数描述如下:
    • 8157:本地服务器端口以8157为例,实际配置时,您可使用本地服务器未被使用的任意一个端口。
    • -D:使用动态端口转发,启动SOCKS代理进程并侦听用户本地端口。
    • <主节点公网IP地址>:获取方式请参见获取主节点的公网IP地址
    • <密钥文件路径>:密钥文件保存的路径。
  2. 配置浏览器。
    注意 完成隧道创建之后,请保持终端打开状态,此时并不会返回响应。

    完成动态转发配置以后,您可以从以下两种方式中选择一种来进行浏览器配置。

    • Chrome浏览器命令行方式
      1. 打开命令行窗口,进入本地Google Chrome浏览器客户端的安装目录。

        操作系统不同,Chrome浏览器的默认安装目录不同。

        操作系统 Chrome默认安装路径
        Mac OS X /Applications/Google Chrome.app/Contents/macOS/Google Chrome
        Linux /usr/bin/google-chrome
        Windows C:\Program Files (x86)\Google\Chrome\Application\
      2. 在Chrome浏览器的默认安装目录下,执行以下命令。
        chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
        相关参数描述如下:
        • /tmp/:如果是Windows操作系统,则/tmp/可以写成类似/c:/tmppath/的路径。如果是Linux或者Mac OS X操作系统,则可直接写成/tmp/路径。
        • 8157:本地服务器端口以8157为例,实际配置时,您可使用本地服务器未被使用的任意一个端口。
      3. 在浏览器地址栏输入http://<主节点的主机名>:<port>,即可访问相应的Web UI。

        组件端口信息请参见服务常用端口及配置,主机名的获取请参见获取主节点的主机名

        例如:访问YARN页面时,在浏览器地址栏输入http://emr-header-1:8088

    • 代理扩展程序方式

      代理扩展程序可以帮助您更加轻松地在浏览器中管理和使用代理,确保网页浏览和集群Web UI访问互不干扰。

      1. 安装Chrome的SwitchyOmega插件。
      2. 安装完成以后,单击SwitchyOmega插件,然后在弹出框中选择选项进行配置。
      3. 单击新建情景模式,输入情景模式名称(例如SSH tunnel),情景模式类型选择PAC情景模式
      4. PAC脚本中配置以下内容。
        function regExpMatch(url, pattern) {    
          try { return new RegExp(pattern).test(url); } catch(ex) { return false; }    
        }
        
        function FindProxyForURL(url, host) {
            // Important: replace 172.31 below with the proper prefix for your VPC subnet
        
            if (shExpMatch(url, "*localhost*")) return "SOCKS5 localhost:8157";
            if (shExpMatch(url, "*emr-header*")) return "SOCKS5 localhost:8157";
            if (shExpMatch(url, "*emr-worker*")) return "SOCKS5 localhost:8157";
        
            return 'DIRECT';
        }
      5. 完成上述参数配置后,在左侧导航栏中单击应用选项
      6. 打开Chrome浏览器,在Chrome中单击SwitchyOmega插件,切换到之前创建的SSH tunnel情景模式下。
      7. 在浏览器地址栏输入http://<主节点的主机名>:<port>,即可访问相应的Web UI。

        组件端口信息请参见服务常用端口及配置,主机名的获取方式请参见获取主节点的主机名

        例如:访问YARN页面时,在浏览器地址栏输入http://emr-header-1:8088

使用本地端口转发方式

注意 此方式只能查看最外层的页面,无法查看详细的作业信息。

您可以通过SSH本地端口转发(即将主实例端口转发到本地端口),访问当前主节点上运行的网络应用界面,而不使用SOCKS代理。

  1. 在本地服务器终端输入以下命令,创建SSH隧道。
    • 密钥方式
      ssh -i <密钥文件路径> -N -L 8157:<主节点主机名>:8088 root@<主节点公网IP地址>
    • 密码方式
      ssh -N -L 8157:<主节点主机名>:8088 root@<主节点公网IP地址>
    相关参数描述如下:
    • -L:使用本地端口转发,您可以指定一个本地端口,用于将数据转发到主节点本地Web服务器上标识的远程端口。
    • 8088:主节点上ResourceManager的访问端口,您可以替换为其他组件的端口。

      组件端口信息请参见服务常用端口及配置,主机名的获取请参见获取主节点的主机名

    • 8157:本地服务器端口以8157为例,实际配置时,您可使用本地服务器未被使用的任意一个端口。
    • <主节点公网IP地址>:获取方式请参见获取主节点的公网IP地址
    • <密钥文件路径>:密钥文件保存的路径。
  2. 保持终端打开状态,打开浏览器,在浏览器地址栏中输入http://localhost:8157/

服务常用端口及配置

服务 端口 描述
Hadoop 2.X 50070 HDFS Web UI的端口。
配置参数为dfs.namenode.http-addressdfs.http.address
说明 dfs.http.address已过期但仍能使用。
50075 DataNode Web UI的端口。
50010 Datanode服务端口,用于数据传输。
50020 IPC服务的端口。
8020 高可用的HDFS RPC端口。
8025 ResourceManager端口。

配置参数为yarn.resourcemanager.resource-tracker.address

9000 非高可用的HDFS RPC端口。
配置参数为fs.defaultFSfs.default.name
说明 fs.default.name已经过期但仍能使用。
8088 YARN Web UI的端口。
8485 JournalNode的RPC端口。
8019 ZKFC的端口。
19888 JobHistory Server的Web UI端口。

配置参数为mapreduce.jobhistory.webapp.address

10020 JobHistory Server的Web UI端口。

配置参数为mapreduce.jobhistory.address

Hadoop 3.X 8020 NameNode的端口。
配置参数为dfs.namenode.http-addressdfs.http.address
说明 dfs.http.address已过期但仍能使用。
9870
9871 NameNode的端口。
9866 DataNode的端口。
9864 DataNode的端口。
9865 DataNode的端口。
8088 ResourceManager的端口。

配置参数为yarn.resourcemanager.webapp.address

MapReduce 8021 JobTracker的端口。

配置参数为mapreduce.jobtracker.address

Zookeeper 2181 客户端连接Zookeeper的端口。
2888 Zookeeper集群内通讯使用,Leader监听此端口。
3888 Zookeeper端口,用于选举Leader。
HBase 16010 Hbase的Master节点的Web UI端口。

配置参数为hbase.master.info.port

16000 HMaster的端口。

配置参数为hbase.master.port

16030 Hbase的RegionServer的Web UI管理端口。

配置参数为hbase.regionserver.info.port

16020 HRegionServer的端口。

配置参数为hbase.regionserver.port

9099 ThriftServer的端口。
Hive 9083 MetaStore服务默认监听端口。
10000 Hive的JDBC端口。
10001 Spark Thrift Sever的JDBC端口。
Spark 7077
  • Spark的Master与Worker节点进行通讯的端口。
  • Standalone集群提交Application的端口。
8080 Master节点的Web UI端口,用于资源调度。
8081 Worker节点的Web UI端口,用于资源调度。
4040 Driver的Web UI端口,用于任务调度。
18080 Spark History Server的Web UI 端口。
Kafka 9092 Kafka集群节点之间通信的RPC端口。
Redis 6379 Redis服务端口。
HUE 8888 Hue Web UI的端口。
Oozie 11000 Oozie Web UI的端口。
Druid 18888 Druid Web UI的端口。
18090 Overlord的端口。

配置参数为overlord.runtime页签下的druid.plaintextPort

18091 MiddleManager的端口。

配置参数为middleManager.runtime页签下的druid.plaintextPort

18081 Coordinator的端口。

配置参数为coordinator.runtime页签下的druid.plaintextPort

18083 Historical的端口。

配置参数为historical.runtime页签下的druid.plaintextPort

18082 Broker的端口。

配置参数为broker.runtime页签下的druid.plaintextPort

Ganglia 9292 Ganglia Web UI的端口。
Ranger 6080 Ranger Web UI的端口。
Kafka Manager 8085 Kafka Manager的端口。
Superset 18088 Superset Web UI的端口。
Impala 21050 使用JDBC连接Impala的端口。
Presto 9090 Presto Web UI的端口。