如果 E-MapReduce 管理控制台中的作业和工作流无法满足您更加复杂的应用需求,则您可登录到 E-MapReduce 集群的主机进行相关操作。

前提条件

通过Chrome浏览器安装插件前,请确保您能够访问chrome.google.com域名。

集群环境变量

机器上已设置好相关的环境变量供您直接引用,其中常用的环境变量如下:
  • JAVA_HOME
  • HADOOP_HOME
  • HADOOP_CONF_DIR
  • HADOOP_OG_DIR
  • YARN_LOG_DIR
  • HIVE_HOME
  • HIVE_CONF_DIR
  • PIG_HOME
  • PIG_CONF_DIR
说明 请勿修改这些环境变量的值,以免造成 E-MapReduce 集群发生意外错误。

登录 Master 主机

  1. 运行 ssh 命令登录 Master 主机。
    ssh root@ip.of.master

    Master 主机公网 IP 地址可从集群详情页中的主机信息区域获取。

    说明 集群 Master 机器默认开通了公网 IP 地址。
  2. 输入创建集群时设定的密码,即可成功登录。

SSH 免密码登录 Master 机器(Linux)

通常,您需要登录到集群上进行一些管理和操作。为便于登录集群 Master 机器,您可打通本地机器与 Master 机器的 SSH 无密码登录。本地机器为 Linux 操作系统时,操作如下:
  1. 登录 Master 主机
  2. 切换到 hadoop 用户或 hdfs 用户。
  3. 复制私钥到本地。
    sz ~/.ssh/id_rsa
  4. 返回本地机器,尝试重新登录 Master 机器。
    ssh -i 私钥存放路径/id_rsa hadoop@120.*.*.*

    如果您只有这一个私钥,则可直接存储在 ~/.ssh/ 下,默认使用这个私钥,这样登录时即可不加 -i 选项指定私钥了。

SSH 免密码登录 Master 机器(Windows)

通常,您需要登录到集群上进行一些管理和操作。为便于登录集群 Master 机器,您可打通本地机器与 Master 机器的 SSH 无密码登录。本地机器为 Windows 操作系统时,您可按照以下方法之一进行操作:
  • 方式一:通过 PuTTY 登录
    1. 下载 PuTTY 和 PuTTygen
    2. 运行 PuTTYgen,并 Load 您的私钥。
      注意 请妥善保管私钥,并保证私钥的安全。如果私钥泄漏,请立即重新生成新的私钥来替换。
    3. 在默认配置下,单击 Save private key

      保存完成后,生成的文件是一个后缀为 ppk 的 PuTTY 密钥文件。

    4. 运行 PuTTY,并在 Session 页面输入目标机器的公网 IP 地址。
      说明 输入公网 IP 地址时需要带上登录用户,格式类型于 hadoop@MasterNodeIP。
    5. 在左侧导航栏中,单击Connetion > SSH > Auth,配置之前生成的 ppk 文件。
    6. 完成上述参数配置后,单击 Open,即可自动登录到 Master 节点。
  • 方式二:通过 Cygwin | MinGW 登录

    Cygwin | MinGW 是在 Windows 上模拟 Linux 的工具,使用起来也非常简单方便。此方式的操作方法与 Linux 操作系统的操作方式一样,请参见 SSH 免密码登录 Master 机器(Linux)

    推荐您采用 MinGW 工具,这是最小巧的工具。如果官网无法打开,您可通过 git 客户端下载,默认自带的 Git Bash 即可满足需要。

查看 Hadoop、Spark、Ganglia 等系统的 Web UI

说明 在进行本步骤前,请确认您已经完成 SSH 免密码登录 Master 机器(Linux)SSH 免密码登录 Master 机器(Windows)配置。
在 E-MapReduce 集群中,为保证集群安全,Hadoop、Spark 和 Ganglia 等系统的 Web UI 监控系统端口均未对外开放。如果您需要访问这些 Web UI,则需要建立一个 SSH 隧道,通过端口转发的方式来达到目的。端口转发方式包括端口动态转发和本地端口转发两种。
注意 下面的操作是在您本地机器上完成的,不是集群内部机器。
  • 方式一:端口动态转发
    • 密钥方式

      创建一个 SSH 隧道,该隧道可打通您本地机器与 E-MapReduce 集群 Master 机器的某个动态端口的连接。

      ssh -i /path/id_xxx -ND 8157 root@masterNodeIP
    • 用户名密码方式(需要输入密码)
      ssh -ND 8157 root@masterNodeIP
      说明 本例中端口均使用 8157 为例,实际配置时,您可使用本地机器未被使用的任何一个端口。
    完成动态转发配置以后,您可以通过 Chrome 浏览器方式或插件方式进行查看 Web UI。
    • Chrome 浏览器方式(推荐)
      通过 Chrome 浏览器,您可使用如下方式来访问 Web UI。
      chrome --proxy-server="socks5://localhost:8157" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost" --user-data-dir=/tmp/

      如果是 Windows 操作系统,则 tmppath 可以写成类似 d:/tmppath 的路径。如果是 Linux 或者 Mac OS X 操作系统,则可直接写成 /tmp/ 路径。

      操作系统不同,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.exe
    • 插件方式
      • 通过 Chrome 插件查看 Web UI。

        此方式下,正常网页浏览和集群 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) {
              // Important: replace 172.31 below with the proper prefix for your VPC subnet
          
              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';
          }
        5. 完成上述参数配置后,在左侧导航栏中单击应用选项,完成配置。
        6. 运行一个命令行,选择以下命令之一来运行。
          // 方式1,密钥的方式
          ssh -i /path/id_xxx -ND 8157 hadoop@masterNodeIP
          // 方式2,用户名密码的方式,需要输入密码
          ssh -ND 8157 hadoop@masterNodeIP
        7. 命令开始运行后,在 Chrome 中单击 SwitchyOmega 插件,切换到之前创建的 SSH tunnel 情景模式下。
        8. 在浏览器地址栏输入机器 IP 地址 + 端口,即可访问相应的 Web UI。

          此处 IP 地址即 SSH 命令行要连接的机器 IP 地址,一般是 Master 节点 ,例如 YARN:8088、HDFS:50070 等。

      • 通过配置本地代理查看 Web UI。
        打通本地机器与 E-MapReduce 集群 Master 主机的 SSH 免密码登录后,如果想在浏览器中查看 Hadoop、Spark、Ganglia 的 Web UI,您还需要配置一个本地代理。
        1. 假设您使用的是 Chrome 或者 Firefox 浏览器,请单击下载 FoxyProxy Standard 代理软件
        2. 安装完成并重启浏览器后,打开一个文本编辑器,编辑如下内容。
          <?xml version="1.0" encoding="UTF-8"?>
          <foxyproxy>
          <proxies>
          <proxy name="aliyun-emr-socks-proxy" id="2322596116" notes="" fromSubscription="false" enabled="true" mode="manual" selectedTabIndex="2" lastresort="false" animatedIcons="true" includeInCycle="true" color="#0055E5" proxyDNS="true" noInternalIPs="false" autoconfMode="pac" clearCacheBeforeUse="false" disableCache="false" clearCookiesBeforeUse="false" rejectCookies="false">
          <matches>
          <match enabled="true" name="120.*" pattern="http://120.*" isRegEx="false" isBlackList="false" isMultiLine="false" caseSensitive="false" fromSubscription="false" ></match>
          </matches>
          <manualconf host="localhost" port="8157" socksversion="5" isSocks="true" username="" password="" domain="" ></manualconf>
          </proxy>
          </proxies>
          </foxyproxy>

          关键参数说明如下:

          • Port 8157:是您本地用来建立与集群 Master 机器 SSH 连接的端口,必须与您之前在终端中执行的 SSH 命令中使用的端口匹配。
          • 120.*:用来匹配 Master 主机的 IP 地址,请根据实际 Master 的 IP 地址来替换。
        3. 在浏览器中,单击 Foxyproxy > Options
        4. Import FoxyProxy Setting 对话框中,单击 Import/Export来上传您之前编辑的 xml 文件,然后单击 Add
        5. 在浏览器中,单击 Foxyproxy > Use Proxy aliyun-emr-socks-proxy for all URLsFoxyproxy
        6. 在浏览器的地址栏中输入 localhost:8088,即可打开远端的 Hadoop 页面。
  • 方式二:本地端口转发
    注意 此方式只能查看最外层的页面,如果查看详细的作业信息,则会出错。
    • 密钥方式:
      ssh -i /path/id_rsa -N -L 8157:masterNodeIP:8088 hadoop@masterNodeIP
    • 用户名密码方式(需要输入密码)
      ssh -N -L 8157:masterNodeIP:8088 hadoop@masterNodeIP 
    关键参数说明:
    • path:私钥存放路径。
    • masterNodeIP:要连接的 Master节点的 IP 地址。
    • 8088:Master 节点上 ResourceManager 的访问端口。