Knox

本文介绍如何在E-MapReduce上配置Knox,以通过公网方式访问HDFS、YARN、SparkGangliaWeb UI页面。

前提条件

已创建选择了Knox服务的E-MapReduce,详情请参见创建集群

说明

如果您创建的集群未选择Knox服务,可以通过新增服务来添加。 

准备工作

设置安全组访问

  1. 获取您当前设备的公网访问IP地址。

    为了安全的访问集群组件,在设置安全组策略时,推荐您只针对当前的公网访问IP地址开放。访问IP地址,即可查看您当前的公网访问IP地址。

  2. 添加端口:

    本文以添加8443端口为例介绍。

    1. EMR控制台集群的基础信息页面的安全区域,单击集群安全组右侧的链接。

    2. 安全组页面,单击入方向中的增加规则

    3. 访问来源填写为上一步骤中获取的公网访问IP地址,访问目的填写为8443/8443

    4. 单击保存

重要
  • 为防止被外部的用户攻击导致安全问题,授权对象禁止填写为0.0.0.0/0

  • 如果您创建集群时,没有挂载公网IP,可以在ECS控制台为Master节点上的ECS实例添加公网IP。

设置Knox用户

访问Knox时需要验证身份,即需要输入您的用户名和密码。Knox的用户身份验证基于LDAP,您可以使用集群中Apache Directory ServerLDAP服务。

  • 方式一(推荐)

    EMR on ECS页面,单击目标集群的集群名称。单击上方的用户管理页签,直接添加Knox访问账号,详情请参见用户管理

  • 方式二 :

    1. 通过SSH方式连接集群,详情请参见登录集群

    2. 准备您的用户数据,例如Tom。

      编辑users.ldif文件。

      su knox
      vim /opt/apps/KNOX/knox-current/templates/users.ldif

      替换文件中所有的emr-guestTom,替换EMR GUESTTom,设置userPassword的值为您自己的密码。

    3. 执行以下命令,导入用户数据至LDAP。

      cd /opt/apps/KNOX/knox-current/templates
      sh ldap-sample-users.sh

访问Web UI

访问Web UI的详情,请参见通过控制台访问开源组件Web界面

常见问题

  • Q:Knox组件异常停止,启动Knox的时候报错Failed to start gateway: org.apache.hadoop.gateway.services.ServiceLifecycleException: Gateway SSL Certificate is Expired,具体信息如下图所示。ERROR

  • A:您可以按照以下步骤处理。

    1. 使用SSH登录集群,详情请参见登录集群

    2. 执行以下命令,将之前错误的证书重命名。

      sudo mv /opt/apps/KNOX/knox-current/data/security/keystores/gateway.jks /opt/apps/KNOX/knox-current/data/security/keystores/bak_gateway.jks
      说明

      您也可以将之前错误的证书移动到其他目录。

    3. 启动Knox。

      1. EMR控制台的集群服务页面,选择Knox服务区域的more > 启动

      2. 在弹出的对话框中,输入执行原因,单击确定

      3. 确认对话框中,单击确定