本文为您介绍如何通过SSH隧道方式访问开源组件的Web UI。
背景信息
在E-MapReduce集群中,为保证集群安全,Hadoop、Spark和Flink等开源组件的Web UI的端口均未对外开放。您可以通过控制台的方式访问Web UI,也可以通过在本地服务器上建立SSH隧道以端口转发的方式来访问Web UI,端口转发方式包括端口动态转发和本地端口转发两种。
如果您需要通过控制台的方式访问Web UI时,请参见访问链接与端口。
前提条件
获取主节点的节点名称和公网IP地址
- 进入节点管理页面。
- 登录EMR on ECS控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 在集群管理页面,单击目标集群操作列的节点管理。
- 单击主实例组所在行的
图标。
- 在节点名称和公网IP列,可以查看主节点的节点名称和公网IP地址。
使用动态端口转发方式
创建从本地服务器开放端口到集群主节点的SSH隧道,并运行侦听该端口的本地SOCKS代理服务器,端口的数据会由SSH隧道转发到集群主节点。
- 创建SSH隧道。重要 完成隧道创建之后,请保持终端打开状态,此时并不会返回响应。
- 密钥方式
ssh -i <密钥文件路径> -N -D 8157 root@<主节点公网IP地址>
- 密码方式
ssh -N -D 8157 root@<主节点公网IP地址>
相关参数描述如下:8157
:本地服务器端口以8157
为例,实际配置时,您可使用本地服务器未被使用的任意一个端口。-D
:使用动态端口转发,启动SOCKS代理进程并侦听用户本地端口。<主节点公网IP地址>
:获取方式请参见获取主节点的节点名称和公网IP地址。<密钥文件路径>
:密钥文件保存的路径。
- 密钥方式
- 配置浏览器。
完成动态转发配置以后,您可以从以下两种方式中选择一种来进行浏览器配置。
- Chrome浏览器命令行方式
- 打开命令行窗口,进入本地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\ - 在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
为例,实际配置时,您可使用本地服务器未被使用的任意一个端口。
- 在浏览器地址栏输入http://<主节点的主机名>:<port>,即可访问相应的Web UI。
组件端口信息请参见服务常用端口及配置,主机名的获取请参见获取主节点的节点名称和公网IP地址。
例如:访问Yarn页面时,在浏览器地址栏输入http://emr-header-1:8088。
- 打开命令行窗口,进入本地Google Chrome浏览器客户端的安装目录。
- 代理扩展程序方式
代理扩展程序可以帮助您更加轻松地在浏览器中管理和使用代理,确保网页浏览和集群Web UI访问互不干扰。
- 安装Chrome的SwitchyOmega插件。
- 安装完成以后,单击SwitchyOmega插件,然后在弹出框中选择选项进行配置。
- 单击新建情景模式,输入情景模式名称(例如SSH tunnel),情景模式类型选择PAC情景模式。
- 在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"; return 'DIRECT'; }
- 完成上述参数配置后,在左侧导航栏中单击应用选项。
- 打开Chrome浏览器,在Chrome中单击SwitchyOmega插件,切换到之前创建的SSH tunnel情景模式下。
- 在浏览器地址栏输入http://<主节点的主机名>:<port>,即可访问相应的Web UI。
组件端口信息请参见服务常用端口及配置,主机名的获取方式请参见获取主节点的节点名称和公网IP地址。
例如:访问Yarn页面时,在浏览器地址栏输入http://emr-header-1:8088。
- Chrome浏览器命令行方式
使用本地端口转发方式
您可以通过SSH本地端口转发(即将主实例端口转发到本地端口),访问当前主节点上运行的网络应用界面,而不使用SOCKS代理。
- 在本地服务器终端输入以下命令,创建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地址。<密钥文件路径>
:密钥文件保存的路径。
- 密钥方式
- 保持终端打开状态,打开浏览器,在浏览器地址栏中输入http://localhost:8157/。
服务常用端口及配置
服务 | 端口 | 描述 |
---|---|---|
Hadoop 2.X | 50070 | HDFS Web UI的端口。 配置参数为dfs.namenode.http-address或dfs.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.defaultFS或fs.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-address或dfs.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 |
|
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的端口。 |