登录集群内部的用途
若您觉得在网页上的作业和执行计划无法满足您更加复杂的应用需求,您可以登录到 E-MapReduce 集群的主机上,找到集群的详情页,其中就有集群 master 机器的公网 IP 地址,您可以直接 SSH 登录到这台机器上,查看各种设置与状态。
机器上已为您设置好相关的环境变量,其中包括以下常用的环境变量:
JAVA_HOME
HADOOP_HOME
HADOOP_CONF_DIR
HADOOP_LOG_DIR
YARN_LOG_DIR
HIVE_HOME
HIVE_CONF_DIR
PIG_HOME
PIG_CONF_DIR
您可以在脚本中直接引用这些变量,但请不要去修改这些变量的值,以免造成 E-MapReduce 的意外错误。
登录 master 主机步骤
使用如下命令 SSH 登录到 master 主机。请在集群详情页的硬件信息栏中获取集群 master 机器的公网 IP。[backcolor=transparent]ssh root@ip[backcolor=transparent].[backcolor=transparent]of[backcolor=transparent].[backcolor=transparent]master
输入创建时设定的密码。
打通本地机器与集群 master 机器的 SSH 无密码登录
通常,您需要登录到集群上进行一些管理和操作。为便于登录集群 master 机器,您可打通与 master 机器的 SSH 无密码登录(集群 master 机器默认开通了公网 IP)。操作步骤如下:
通过上面提到的 root + 密码的方式登录到 master 主机。
切换到到Hadoop 用户或者 hdfs 用户。su hadoop
Linux 的 SSH 方式
复制私钥到本地。[backcolor=transparent]sz [backcolor=transparent]~[backcolor=transparent]/.ssh/[backcolor=transparent]id_rsa
回到您的本地机器,尝试重新登录 master 机器。
- [backcolor=transparent]ssh [backcolor=transparent]-[backcolor=transparent]i [backcolor=transparent]私钥存放路径/[backcolor=transparent]id_rsa hadoop@120[backcolor=transparent].[backcolor=transparent]26.221[backcolor=transparent].[backcolor=transparent]130
当然如果你只有这一个私钥,也可以直接放到你的 ~/.ssh/ 下,默认使用这个私钥,就不需要 -i 指定了。
Windows 的 SSH 方式
在 Windows 下你可以有多种方式来使用 SSH 免密码登录 master 机器。
方式一:使用 PuTTY
点击下载 PuTTY。
在同样的位置下载 PuTTYgen。
打开 PuTTYgen,并 Load 您的私钥。
注意:请妥善保管这个私钥,保证该私钥的安全。若私钥不幸泄漏了,请立刻重新生成一个新的取代。
使用默认的配置,并 Save private key。会保存出一个后缀为 ppk 的 PuTTY 使用的密钥文件。
运行 PuTTY,并在配置页面选择 Session。
输入您要连接的目标机器公网 IP 地址,要加上登录使用的用户名,类似 hadoop@MasterNodeIP。
在配置页面选择 Connetion 并展开 > 选择 SSH 并展开 > 选择 Auth。
选择之前生成好的 ppk 文件。
最后单击 Open,就会自动登录到 master 节点了。
方式二:使用 Cygwin | MinGW
这是在 Windows 上模拟 Linux 的非常方便的工具,使用起来也非常简单。
如果采用这种方式,连接过程就可以参考上面的 Linux 的 SSH 方式了。
推荐采用 MinGW 的方式,这个是最小巧的一种方式。如果官网打不开,可以下载 git 的客户端,默认带的 Git Bash 就可以满足。
查看 Hadoop、Spark、Ganglia 等系统的 webui
注意:在进行本步骤前,请确认您已经完成了上面的 SSH 无密码登录流程。
由于安全的缘故,E-MapReduce 集群的 Hadoop、Spark 和 Ganglia 等系统的 webui 监控系统的端口都没有对外开放。如果用户想要访问这些 webui,需要建立一个 SSH 隧道,通过端口转发的方式来达到目的。有如下两种方式:
注意:下面的操作是在您本地机器上完成的,不是集群内部机器。
方式一:端口动态转发
创建一个 SSH 隧道,该隧道可打通您本地机器跟 E-MapReduce 集群的 master 机器的某个动态端口的连接。
- [backcolor=transparent]ssh [backcolor=transparent]-[backcolor=transparent]i [backcolor=transparent]/[backcolor=transparent]path[backcolor=transparent]/[backcolor=transparent]id_xxx [backcolor=transparent]-[backcolor=transparent]ND [backcolor=transparent]8157[backcolor=transparent] hadoop@masterNodeIP
8157 是您本地机器没有被使用过的任何一个端口,用户可以自定定义。
完成动态转发以后,您可以选择如下两种方式来查看。
[backcolor=transparent]推荐方式
推荐使用 Chrome 浏览器,可以使用如下的方式来访问 Web UI:
-
[backcolor=transparent]
chrome [backcolor=transparent]
--[backcolor=transparent]
proxy[backcolor=transparent]
-[backcolor=transparent]
server[backcolor=transparent]
=[backcolor=transparent]
"socks5://localhost:8157"[backcolor=transparent]
[backcolor=transparent]
--[backcolor=transparent]
host[backcolor=transparent]
-[backcolor=transparent]
resolver[backcolor=transparent]
-[backcolor=transparent]
rules[backcolor=transparent]
=[backcolor=transparent]
"MAP * 0.0.0.0 , EXCLUDE localhost"[backcolor=transparent]
[backcolor=transparent]
--[backcolor=transparent]
user[backcolor=transparent]
-[backcolor=transparent]
data[backcolor=transparent]
-[backcolor=transparent]
dir[backcolor=transparent]
=[backcolor=transparent]
/tmp/
若是 Windows 系统,这里的 tmppath 可以写成类似 d:/tmppath;若是 Linux 或者 OSX,可以直接写成 /tmp/。
在不同的操作系统中,Chrome 的位置不同,请参见下表:
[backcolor=transparent]插件方式
此时,您本地机器跟 E-MapReduce 集群的 master 主机的 SSH 通道已经打通,要在浏览器中查看 Hadoop、Spark、Ganglia 的 webui,您还需要配置一个本地代理。操作步骤如下:
假设您使用的是 Chrome 或者 Firefox 浏览器,请点击
下载 FoxyProxy Standard 代理软件。
安装完成并重启浏览器后,打开一个文本编辑器,编辑如下内容:[backcolor=transparent]<?[backcolor=transparent]xml version[backcolor=transparent]=[backcolor=transparent]"1.0"[backcolor=transparent] encoding[backcolor=transparent]=[backcolor=transparent]"UTF-8"[backcolor=transparent]?>- [backcolor=transparent]<foxyproxy>
- [backcolor=transparent]<proxies>
- [backcolor=transparent]<proxy[backcolor=transparent] [backcolor=transparent]name[backcolor=transparent]=[backcolor=transparent]"aliyun-emr-socks-proxy"[backcolor=transparent] [backcolor=transparent]id[backcolor=transparent]=[backcolor=transparent]"2322596116"[backcolor=transparent] [backcolor=transparent]notes[backcolor=transparent]=[backcolor=transparent]""[backcolor=transparent] [backcolor=transparent]fromSubscription[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]enabled[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]mode[backcolor=transparent]=[backcolor=transparent]"manual"[backcolor=transparent] [backcolor=transparent]selectedTabIndex[backcolor=transparent]=[backcolor=transparent]"2"[backcolor=transparent] [backcolor=transparent]lastresort[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]animatedIcons[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]includeInCycle[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]color[backcolor=transparent]=[backcolor=transparent]"#0055E5"[backcolor=transparent] [backcolor=transparent]proxyDNS[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]noInternalIPs[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]autoconfMode[backcolor=transparent]=[backcolor=transparent]"pac"[backcolor=transparent] [backcolor=transparent]clearCacheBeforeUse[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]disableCache[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]clearCookiesBeforeUse[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]rejectCookies[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent]>
- [backcolor=transparent]<matches>
- [backcolor=transparent]<match[backcolor=transparent] [backcolor=transparent]enabled[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]name[backcolor=transparent]=[backcolor=transparent]"120.*"[backcolor=transparent] [backcolor=transparent]pattern[backcolor=transparent]=[backcolor=transparent]"http://120.*"[backcolor=transparent] [backcolor=transparent]isRegEx[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]isBlackList[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]isMultiLine[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]caseSensitive[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]fromSubscription[backcolor=transparent]=[backcolor=transparent]"false"[backcolor=transparent] [backcolor=transparent]></match>
- [backcolor=transparent]</matches>
- [backcolor=transparent]<manualconf[backcolor=transparent] [backcolor=transparent]host[backcolor=transparent]=[backcolor=transparent]"localhost"[backcolor=transparent] [backcolor=transparent]port[backcolor=transparent]=[backcolor=transparent]"8157"[backcolor=transparent] [backcolor=transparent]socksversion[backcolor=transparent]=[backcolor=transparent]"5"[backcolor=transparent] [backcolor=transparent]isSocks[backcolor=transparent]=[backcolor=transparent]"true"[backcolor=transparent] [backcolor=transparent]username[backcolor=transparent]=[backcolor=transparent]""[backcolor=transparent] [backcolor=transparent]password[backcolor=transparent]=[backcolor=transparent]""[backcolor=transparent] [backcolor=transparent]domain[backcolor=transparent]=[backcolor=transparent]""[backcolor=transparent] [backcolor=transparent]></manualconf>
- [backcolor=transparent]</proxy>
- [backcolor=transparent]</proxies>
- [backcolor=transparent]</foxyproxy>
其中:
Port 8157 是您本地用来建立与集群 master 机器 SSH 连接的端口,这个需要跟您之前执行的在终端中执行的 SSH 命令中使用的端口匹配。
120.* 这个匹配是用来匹配 master 主机的 IP 地址,请根据 master 的 IP 地址的情况来定。
在浏览器中点击 Foxyproxy 按钮,选择 Options。
选择 Import/Export。
选择刚才您编辑的 xml 文件,点击 Open。
在 Import FoxyProxy Setting 对话框中,点击 Add。
点击浏览器中的 Foxyproxy 按钮,选择“Use Proxy aliyun-emr-socks-proxy for all URLs”。
在浏览器中输入 localhost:8088,就可以打开远端的 Hadoop 界面了。
方式二:本地端口转发
注意:这个方式的缺陷是只能看到最外层的界面,一旦要看详细的作业信息,就会出错。
- [backcolor=transparent]ssh [backcolor=transparent]-[backcolor=transparent]i [backcolor=transparent]/[backcolor=transparent]path[backcolor=transparent]/[backcolor=transparent]id_rsa [backcolor=transparent]-[backcolor=transparent]N [backcolor=transparent]-[backcolor=transparent]L [backcolor=transparent]8157[backcolor=transparent]:[backcolor=transparent]masterNodeIP[backcolor=transparent]:[backcolor=transparent]8088[backcolor=transparent] hadoop@masterNodeIP
[backcolor=transparent]参数说明:
path:私钥存放路径。
masterNodeIP:要连接的 master节点 IP。
8088:是 master 节点上 ResourceManager 的访问端口号。