配额组(Quota)是MaxCompute的计算资源池,为MaxCompute中的计算作业提供所需计算资源(CPU及内存)。在MaxCompute中支持根据计算作业对计算资源的需求,指定匹配的Quota,助力您高效使用计算资源。本文为您介绍如何使用MaxCompute的Quota。

背景信息

MaxCompute的计算资源配额组支持两种方式使用。
  • 通过Project关联默认计算Quota,实现Project提交的作业使用此Quota进行计算。
  • 作业级别指定使用计算Quota(use quota),通过此功能可以支持将一个Project里的作业指定到不同的Quota进行计算,包括指定包年包月、按量计费的Quota。作业级别指定的Quota优先级大于Project默认的Quota。

Project设置默认Quota

Project设置默认计算Quota ,即此Project发起的作业默认会使用默认Quota的资源进行计算,无需其他设置。新建项目时可以直接选择关联默认Quota,也可以通过控制台项目管理对项目进行默认Quota切换,详情请参见设置配额组

作业级别指定Quota

作业级别指定Quota主要是在作业前面通过命令进行指定,此功能会校验作业所有者是否有该Quota的使用权限,具体操作步骤如下。

  1. 新建Quota。
    新建Quota请参见设置配额组
    说明 Quota名称建议使用英文字母和数字的组合。已经存在的中文Quota名称可继续使用。
  2. 授权。
    当前针对作业级别指定Quota功能的鉴权默认是所有账号(包括阿里云账号)和角色都没有权限,需要进行授权操作。
    1. 新增角色。
      1. 登录MaxCompute控制台,在左上角选择地域,单击角色管理
      2. 角色管理页面,单击新增角色
      3. 新增角色对话框,自定义角色名称和使用如下权限策略内容。
        {
            "Statement": [{
                    "Action": [
                        "odps:List",
                        "odps:Usage"],
                    "Effect": "Allow",
                    "Resource": ["acs:odps:*:regions/*/quotas/*"]}],
            "Version": "1"
        }
        参数说明如下。
        参数 说明
        Action 指定被授予的操作权限名称。单次授权可以指定多个操作,可根据实际情况自行添加操作权限名称。当有多个操作时,多个操作名称之间使用半角逗号(,)分隔。操作取值请参见权限列表
        说明 权限策略参数的详细内容请参见权限策略基本元素
        Resource 指定被授权的资源范围。

        ["acs:odps:*:regions/*/quotas/*"]含义为所有Region下的所有Quota,可根据实际情况自行选择具体Region和Quota。

      4. 单击确定,完成新增角色。
    2. 将角色授权给需要进行作业级别指定Quota的账号。
      说明 默认主账号或者拥有账户级别(tenant)Super_Administrator的子账号可进行授权操作。
      由于授权对象的差别,会出现如下两种场景。
      • 对阿里云账号授权。
        目前需要通过如下命令对阿里云账号授权。
        --将阿里云账号加到租户内并给阿里云账号授权角色
        Add tenant user <Aliyun$xxxx>;
        Grant tenant role <role_name> to user <Aliyun$xxxx>;
        --查看租户role/user的权限
        Show grants for tenant role <role_name>;
        Show grants for tenant user <user_name>;
        Show principals for tenant [role] <role_name>;
      • 对RAM用户授权。
        1. MaxCompute控制台,单击用户管理
        2. 在对应RAM用户的角色列下拉框中勾选新增的角色,完成授权。
  3. 作业指定Quota。
    在作业的Query前使用如下命令指定Quota。
    set odps.task.wlm.quota=<quotaname>; 
    quotaname为Quota名称。