本文介绍如何将YARN集成至Ranger,以及如何实现YARN队列的权限控制。

前提条件

已创建EMR-3.34.0及后续版本或EMR-4.8.0及后续版本的集群,并且选择了Ranger服务,详情请参见创建集群

背景信息

Ranger YARN仅支持Scheduler队列的权限控制,不支持Fair队列的权限控制。Ranger YARN队列权限控制与YARN自带的Capacity Scheduler配置共同生效,且优先级低于Capacity Scheduler配置。只有在YARN自带的Capacity Scheduler配置拒绝校验时才会校验Ranger YARN权限。鉴权流程如下图所示:Authentication process

YARN集成Ranger

注意 请谨慎执行以下操作,确保在配置过程中集群不会提交YARN作业,并在开启Ranger YARN后,给提交YARN作业的用户配置相应的队列权限,否则会出现作业无法提交的问题。
  1. 启用YARN。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
    5. 在左侧导航栏中,选择集群服务 > RANGER
    6. 单击右侧的操作下拉菜单,选择启用YARN
    7. 执行集群操作对话框,填写执行原因,单击确定
    8. 确认对话框,单击确定
      单击右上角查看操作历史查看任务进度,等待任务完成。
  2. Ranger UI添加YARN Service。
    1. 进入Ranger UI页面,详情请参见概述
    2. 在Ranger UI页面添加YARN Service。
      YARN
    3. 配置参数。
      YARN
      参数 说明
      Service Name 固定值为emr-yarn
      Username 固定值为hadoop
      Password 自定义。
      Authentication Type
      • 普通集群选择Simple
      • 高安全集群选择Kerberos
      YARN REST URL http://emr-header-1:8088
      Add New Configurations
      • Name1:固定值为policy.download.auth.users
      • Value1:固定值为yarn
      • Name2:固定值为hadoop.http.user.name
      • Value2:固定值为hadoop
    4. 单击Add
  3. 重启YARN ResourceManager。
    1. 在YARN集群服务页面,选择操作 > 重启ResourceManager
    2. 执行集群操作对话框,填写执行原因,单击确定
    3. 确认对话框,单击确定
      单击右上角查看操作历史查看任务进度,等待任务完成。
  4. 修改capacity-scheduler配置。
    1. 在YARN集群服务页面,单击配置页签。
    2. 服务配置区域,单击capacity-scheduler页签。
    3. 修改xml-direct-to-file-content中的内容。
      说明 建议您可以拷贝xml-direct-to-file-content中的全部内容在文本编辑器中编辑。
      1. 删除以下内容:
        <property>
          <name>yarn.scheduler.capacity.root.default.acl_submit_applications</name>
          <value>*</value>
          <description>The ACL of who can submit jobs to the default queue.</description>
        </property>
        <property>
          <name>yarn.scheduler.capacity.root.default.acl_administer_queue</name>
          <value>*</value>
          <description>The ACL of who can administer jobs on the default queue.</description>
        </property>
      2. 添加以下内容:
        <property>
          <name>yarn.scheduler.capacity.root.acl_submit_applications</name>
          <value> </value>
          <description>The ACL of who can submit jobs to the root queue.</description>
        </property>
        <property>
          <name>yarn.scheduler.capacity.root.acl_administer_queue</name>
          <value> </value>
          <description>The ACL of who can administer jobs on the root queue.</description>
        </property>
        说明 添加内容中的<value> </value>,中间是有空格的,表示不允许任何用户向root队列提交作业和管理root队列。
  5. 保存配置。
    1. 单击右上角的保存
    2. 确认修改对话框中,输入执行原因,开启自动更新配置
    3. 单击确定
  6. 刷新Queues。
    1. 在YARN集群服务页面,选择操作 > 刷新Queues
    2. 执行集群操作对话框,填写执行原因,单击确定
    3. 确认对话框,单击确定
      单击右上角查看操作历史查看任务进度,等待任务完成。

权限配置示例

例如,授予test用户向default队列提交作业的权限。

  1. 进入Ranger UI页面,详情请参见概述
  2. 在Ranger UI页面,单击配置好的emr-yarn
    YARN权限配置
  3. 单击右上角的Add New Policy
  4. 配置权限。
    参数 说明
    Policy Name 策略名称,可以自定义。
    Queue 队列名称,例如root.default。
    recursive 子队列是否继承该权限。
    Select Group 指定添加此策略的用户组。
    Select User 指定添加此策略的用户。
    Permissions 选择授予的权限。
  5. 单击Add
    添加Policy后,实现对test的授权。test用户可以向default队列提交作业。
    说明 添加、删除或修改Policy后,需要等待约一分钟至授权生效。