在E-MapReduce(简称EMR)集群中,为了确保集群安全,Hadoop、Spark和Flink等开源组件的Web UI的端口均未对外开放。鉴于此安全机制,您无法直接访问这些组件的管理界面。EMR提供了控制台和SSH隧道两种方式进行安全访问。本文为您介绍如何通过SSH隧道方式访问开源组件Web UI。
前提条件
获取主节点的节点名称和公网IP地址
进入节点管理页面。
在顶部菜单栏处,根据实际情况选择地域和资源组。
单击目标集群操作列的节点管理。
单击主实例组所在行的图标。
在节点名称和公网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默认安装目录
macOS X
/Applications/Google\ Chrome.app/Contents/macOS
Linux
/usr/bin/google-chrome
Windows
C:\Program Files (x86)\Google\Chrome\Application\
在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
为例,实际配置时,您可使用本地服务器未被使用的任意一个端口。
在浏览器地址栏输入
http://<主节点的主机名>:<port>
,即可访问相应的Web UI。组件端口信息请参见服务常用端口及配置,主机名的获取请参见获取主节点的节点名称和公网IP地址。
例如:访问Yarn页面时,在浏览器地址栏输入
http://master-1-1:8088
。
代理扩展程序方式
代理扩展程序可以帮助您更加轻松地在浏览器中管理和使用代理,确保网页浏览和集群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"; if (shExpMatch(url, "*master*")) return "SOCKS5 localhost:8157"; if (shExpMatch(url, "*core*")) return "SOCKS5 localhost:8157"; return 'DIRECT'; }
完成上述参数配置后,在左侧导航栏中单击应用选项。
打开Chrome浏览器,在Chrome中单击SwitchyOmega插件,切换到之前创建的SSH tunnel情景模式下。
在浏览器地址栏输入
http://<主节点的主机名>:<port>
,即可访问相应的Web UI。组件端口信息请参见服务常用端口及配置,主机名的获取方式请参见获取主节点的节点名称和公网IP地址。
例如:访问Yarn页面时,在浏览器地址栏输入
http://master-1-1:8088
。
使用本地端口转发方式
此方式只能查看最外层的页面,无法查看详细的作业信息。
您可以通过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的端口。 |
相关文档
如果您需要通过控制台的方式访问Web UI,详情请参见访问链接与端口。