如果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主机,详情请参见登录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:8088HDFS: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>

          关键参数说明如下:

          • 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的访问端口。