通过SSH隧道方式访问开源组件Web UI

在E-MapReduce(简称EMR)集群中,为了确保集群安全,Hadoop、Spark和Flink等开源组件的Web UI的端口均未对外开放。鉴于此安全机制,您无法直接访问这些组件的管理界面。EMR提供了控制台和SSH隧道两种方式进行安全访问。本文为您介绍如何通过SSH隧道方式访问开源组件Web UI。

前提条件

  • 已创建集群,详情请参见创建集群

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

获取主节点的节点名称和公网IP地址

  1. 进入节点管理页面。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 单击目标集群操作列的节点管理

  2. 单击主实例组所在行的open图标。

  3. 节点名称公网IP列中,您可以查看主节点的节点名称和公网IP地址。

    IP_Address

使用动态端口转发方式

创建从本地服务器开放端口到集群主节点的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默认安装目录

        macOS X

        /Applications/Google\ Chrome.app/Contents/macOS

        Linux

        /usr/bin/google-chrome

        Windows

        C:\Program Files (x86)\Google\Chrome\Application\

      2. 在Chrome浏览器的默认安装目录下,执行以下命令。

        Windows和Linux

        chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/

        macOS X

        ./Google\ 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。

        组件端口信息请参见服务常用端口及配置,主机名的获取请参见获取主节点的节点名称和公网IP地址

        例如:访问Yarn页面时,在浏览器地址栏输入http://master-1-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) {
           
            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";
            if (shExpMatch(url, "*master*")) return "SOCKS5 localhost:8157";
            if (shExpMatch(url, "*core*")) return "SOCKS5 localhost:8157";
        
            return 'DIRECT';
        }
      5. 完成上述参数配置后,在左侧导航栏中单击应用选项

      6. 打开Chrome浏览器,在Chrome中单击SwitchyOmega插件,切换到之前创建的SSH tunnel情景模式下。

      7. 在浏览器地址栏输入http://<主节点的主机名>:<port>,即可访问相应的Web UI。

        组件端口信息请参见服务常用端口及配置,主机名的获取方式请参见获取主节点的节点名称和公网IP地址

        例如:访问Yarn页面时,在浏览器地址栏输入http://master-1-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的访问端口,您可以替换为其他组件的端口。

      组件端口信息请参见服务常用端口及配置,主机名的获取请参见获取主节点的节点名称和公网IP地址

    • 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的端口。

相关文档

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