除了通过EMR控制台提供的链接地址访问开源组件Web界面外,还可通过SSH隧道方式进行安全访问。通过SSH隧道和SOCKS代理,您可在不暴露集群内部网络结构的情况下访问开源组件Web界面。
开源组件Web界面访问方式选择,请参见查看开源组件 Web 界面。
前提条件
SSH本地端口转发访问
此方式只能查看最外层的页面,无法查看详细的作业信息。
您可以通过SSH本地端口转发,将集群主节点的端口映射到本地端口,从而直接访问集群主节点上运行的Web应用界面。
1、创建SSH隧道
打开本地命令行窗口,通过SSH方式连接到集群主节点。您可根据您创建集群时的配置选择密码方式或密钥方式访问。
密钥方式访问
ssh -i <密钥文件路径> -N -L <本地端口>:<主节点的节点名称>:<组件端口> root@<主节点公网IP地址>
相关参数描述如下:
-i
:指定用于身份验证的私钥文件路径。-N
:仅用于设置端口转发,建立隧道而不需要执行命令。-L
:使用本地端口转发,用于将数据转发到主节点本地Web服务器上标识的远程端口。<密钥文件路径>
:密钥文件保存的路径,详情请参见管理密钥对。<本地端口>
:您可使用本地服务器未被使用的任意一个端口(例如,8156)。<主节点的节点名称>
:集群详情页节点管理下主节点的节点名称,详情请参见获取节点名称(例如,master-1-1)。<组件端口>
:组件端口信息请参见开源组件常用端口(例如,Yarn UI端口8088)。<主节点公网IP地址>
:集群详情页节点管理下主节点的公网IP地址,详情请参见获取节点公网IP。
密码方式访问
ssh -N -L <本地端口>:<主节点的节点名称>:<组件端口> root@<主节点公网IP地址>
相关参数描述如下:
完成隧道创建之后,请保持终端打开状态,此时并不会返回响应。
2、访问开源组件地址
在浏览器地址栏输入http://localhost:<本地端口>
,即可访问相应的Web UI。其中,<本地端口>
为步骤1中配置的本地端口。例如,本示例打开http://localhost:8156
即可访问YARN UI。
如果同时访问多个开源组件的Web界面,需要重复此方式开启另外一个本地端口进行转发。
SSH动态端口转发访问
通过创建SSH隧道,将本地主机的请求通过一个SOCKS代理服务器转发到集群主节点。这样,本地服务器上的请求即可访问集群主节点上开源组件的Web界面数据。
1、创建SSH隧道
打开本地命令行窗口,通过SSH方式连接到集群主节点。您可根据您创建集群时的配置选择密码方式或密钥方式访问。
密钥方式访问
ssh -i <密钥文件路径> -N -D <端口> root@<主节点公网IP地址>
相关参数描述如下:
密码方式访问
ssh -N -D <端口> root@<主节点公网IP地址>
相关参数描述如下:
-N
:仅用于设置端口转发,建立隧道而不需要执行命令。-D
:使用动态端口转发,启动SOCKS代理进程并侦听用户本地端口。<端口>
:您可使用本地服务器未被使用的任意一个端口(例如,8157)。<主节点公网IP地址>
:集群详情页节点管理下主节点的公网IP地址,详情请参见获取节点公网IP。
完成隧道创建之后,请保持终端打开状态,此时并不会返回响应。
2、配置浏览器代理
完成动态转发配置以后,您可从以下两种方式中选择一种来进行浏览器代理配置。
Chrome浏览器命令行方式
打开本地命令行窗口,进入本地Google Chrome浏览器客户端的安装目录。
操作系统
Chrome默认安装目录
macOS X
/Applications/Google\ Chrome.app/Contents/macOS
Linux
/usr/bin/google-chrome
Windows
64位和32位系统默认路径分别如下:
C:\Program Files\Google\Chrome\Application\
C:\Program Files (x86)\Google\Chrome\Application\
说明操作系统不同,Chrome浏览器的默认安装目录不同。
将Google Chrome配置为通过本地SOCKS代理,并启动Google Chrome浏览器。启动端口为在步骤1创建SSH隧道中开启的端口号。
说明本示例演示8157端口的命令。
macOS X
./Google\ Chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
Linux
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/
Windows
chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=c:\\tmppath\\
Chrome插件代理方式
插件方式可帮助您更方便地在浏览器中管理和使用代理,确保网页浏览和集群Web界面访问互不干扰。
安装Chrome的SwitchyOmega插件。
进入插件配置页面,单击新建情景模式,输入情景模式名称(例如SSH tunnel),情景模式类型选择PAC情景模式。
在PAC脚本中配置以下内容。
说明本示例演示8157端口的代码。
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'; }
完成上述参数配置后,在左侧导航栏中单击应用选项。
在浏览器右上角,将代理模式切换至刚创建的SSH tunnel情景模式。
3、访问开源组件地址
在浏览器地址栏输入http://<主节点的节点名称>:<端口>
,即可访问相应服务的Web界面。 例如,访问YARN UI地址为http://master-1-1:8088
。
参数描述如下:
<主节点的节点名称>
:集群详情页节点管理下主节点的节点名称,详情请参见获取节点名称(例如,master-1-1)。<端口>
:步骤1中配置的本地端口。
如果同时访问多个开源组件的Web界面,直接修改端口即可。
相关文档
如果您需要通过控制台的方式访问Web UI,详情请参见通过控制台访问开源组件Web界面。
服务使用问题,详情请参见常见问题。