本文介绍如何将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. 确认对话框,单击确定
      1. 执行集群操作对话框中,输入执行原因,单击确定
      2. 确认对话框,单击确定
      3. 单击右上角查看操作历史查看任务进度,等待任务完成。
  2. Ranger UI添加YARN Service。
    1. 进入Ranger UI页面,详情请参见概述
    2. 在Ranger UI页面,单击YARN所在行的Add图标,添加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. 确认对话框,单击确定
      1. 执行集群操作对话框中,输入执行原因,单击确定
      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. 确认对话框,单击确定
      1. 执行集群操作对话框中,输入执行原因,单击确定
      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后,需要等待约一分钟至授权生效。