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

前提条件

  • 已创建集群,详情请参见创建集群
  • 确保集群所在的安全组已开放22端口。您可以在创建集群时打开远程登录开关,也可以在集群创建好之后手动添加安全组规则来开放22端口,具体操作请参见添加安全组规则
    说明 在安全组规则中手动添加入方向规则,授权类型为IPv4地址段访问,端口为22/22
  • 确保本地服务器与集群主节点网络连通。您可以在创建集群时打开挂载公网开关,或者在集群创建好之后在ECS控制台上为主节点挂载公网,为主节点ECS实例分配固定公网IP或EIP,详情请参见绑定弹性网卡

背景信息

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

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

获取主节点的公网IP地址

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

获取主节点的主机名

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 在左侧导航栏,单击主机列表
  6. 主机列表页面,查看主节点公网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://主机名:端口,即可访问相应的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://主机名:端口,即可访问相应的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 HDFS
    服务 端口 配置
    NameNode 9000 fs.defaultFSfs.default.name
    说明 fs.default.name已经过期但仍能使用。
    50070 dfs.namenode.http-addressdfs.http.address
    说明 dfs.http.address已过期但仍能使用。
  • Hadoop YARN (MRv2)
    服务 端口 配置
    JobHistory Server 10020 mapreduce.jobhistory.address
    JobHistory Server 19888 mapreduce.jobhistory.webapp.address
    ResourceManager 8025 yarn.resourcemanager.resource-tracker.address
    ResourceManager 8032 yarn.resourcemanager.address
    ResourceManager 8030 yarn.resourcemanager.scheduler.address
    ResourceManager 8088 yarn.resourcemanager.webapp.address
  • Hadoop MapReduce (MRv1)
    服务 端口 配置
    JobTracker 8021 mapreduce.jobtracker.address
  • Hadoop HBase
    服务 端口 配置
    HMaster 16000 hbase.master.port
    HMaster 16010 hbase.master.info.port
    HRegionServer 16020 hbase.regionserver.port
    HRegionServer 16030 hbase.regionserver.info.port
    ThriftServer 9099
  • Hadoop Spark
    服务 端口 配置
    SparkHistory 18080
  • Superset
    服务 端口 配置
    Superset 18088
  • Storm
    服务 端口 配置
    Storm UI 9999 ui_port
  • Druid
    服务 端口 配置
    Overlord 18090 overlord.runtime > druid.plaintextPort
    Coordinator 18081 coordinator.runtime > druid.plaintextPort
    MiddleManager 18091 middleManager.runtime > druid.plaintextPort
    Historical 18083 historical.runtime > druid.plaintextPort
    Router 18888 router.runtime > druid.plaintextPort
    Broker 18082 broker.runtime > druid.plaintextPort