全部產品
Search
文件中心

MaxCompute:計算資源-Quota使用

更新時間:Mar 27, 2026

配額組(Quota)是MaxCompute的計算資源集區,提供計算作業所需的計算資源(CPU和記憶體)。MaxCompute支援根據計算作業對計算資源的需求,指定匹配的Quota,助力高效使用計算資源。本文介紹如何使用MaxCompute的Quota。

背景資訊

MaxCompute的計算資源配額組支援使用方式如下。

  • 通過Project關聯預設計算Quota,實現Project提交的作業使用此Quota進行計算。

  • 作業層級指定使用計算Quota(use quota),通過此功能可以支援將一個Project裡的作業指定到不同的Quota進行計算,包括指定訂用帳戶、隨用隨付的Quota。作業層級指定的Quota優先順序大於Project預設的Quota。

  • 通過對Quota配置規則條件,實現滿足規則條件的作業可調度到對應Quota。

Project設定預設Quota

Project設定預設計算Quota ,即此Project發起的作業預設會使用預設Quota的資源進行計算,無需其他設定。建立專案時可以直接選擇關聯預設Quota,也可以通過控制台專案管理對專案進行預設Quota切換,詳情請參見專案管理

作業層級指定Quota

作業層級指定Quota主要是在作業前面通過命令進行指定,此功能會校正作業所有者是否有該Quota的使用許可權,具體操作步驟如下。

  1. 建立Quota

    使用新版控制台建立Quota請參見配置Quota

    說明

    Quota名稱建議使用英文字母和數位組合。已經存在的中文Quota名稱可繼續使用。

  2. 授權

    當前針對作業層級指定Quota功能的鑒權預設為所有帳號(包括阿里雲帳號)及角色都沒有許可權,需要單獨授權。

    1. 新增角色

      1. 登入MaxCompute控制台,在左上方選擇地區。

      2. 在左側導覽列,選擇管理配置 > 租户管理 。

      3. 租户管理頁面,單擊角色管理頁簽。

      4. 角色管理頁簽,單擊新增角色,在彈出的新增角色對話方塊,填寫自訂角色名称policy内容,然後單擊確定完成建立。

        {
            "Statement": [{
                    "Action": [
                        "odps:List",
                        "odps:Usage"],
                    "Effect": "Allow",
                    "Resource": ["acs:odps:*:regions/*/quotas/*"]}],
            "Version": "1"
        }
    2. 將角色授權給需要進行作業層級指定Quota的帳號

      主帳號或擁有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使用者授權

      對RAM使用者授權步驟如下:

      1. 登入MaxCompute控制台,在左上方選擇地區。

      2. 在左側導覽列,選擇管理配置 > 租户管理 。

      3. 租户管理頁面,單擊用户管理頁簽。

      4. 用户管理頁簽,單擊目標RAM使用者對應操作列的修改角色

      5. 在彈出的编辑角色對話方塊,從待添加角色地區選取項目要為目前使用者配置的角色,並配置到已添加角色地區,單擊確定完成修改。

  3. 作業指定Quota

    在作業的Query前使用如下命令指定Quota。

    SET odps.task.wlm.quota = <quota_nick_name>; 

    quota_nick_name為Quota暱稱,且僅對批處理類型的Quota有效。

    • 若是Spark作業指定Quota需要加配置項spark.hadoop.odps.task.wlm.quota填入<quota_nick_name>值。

    • 若是查詢加速作業,需要注意以下幾點:

      • 互動式Quota不能通過如上命令直接指定,只能通過進入查詢加速模式時被系統自動選定,詳情請參見查詢加速(MCQA)

      • set odps.task.wlm.quota=<quota_nick_name>; 命令指定的Quota,含義是在互動Quota中執行任務失敗後回退到quota_nick_name中執行,而不是加速Quota選擇quota_nick_name,因此查詢加速成功的作業消費仍將計入作業執行專案綁定的預設計算Quota。

      • 當不顯式指定odps.task.wlm.quota時,互動式任務會嘗試首先回退到Quota規則指定的Quota。如果沒有配置Quota規則,任務將回退到專案的預設Quota。

Quota規則

MaxCompute支援對Quota配置規則條件,指定滿足某些條件的作業可以被調度到對應的Quota裡執行。

使用限制

  • 訂用帳戶、隨用隨付(標準版和閑時版)二級Quota均支援規則配置。

  • 每個二級Quota最多可配置10條規則。

  • 每個規則中,專案作業Owner參數最多可輸入50個對象,即一條規則最多可以指定給50個專案、50個作業Owner(uid)使用。

  • 每個規則中,Settings最多輸入5個Key Value對。

  • 每個規則中,作業優先順序的取值範圍是[0, 9]

配置Quota規則

只要配置了Quota規則,規則都是生效的。不需要時可以刪除,多個規則之間為或(or)關係,即只要作業匹配該Quota任意一個規則即可被調度或被禁止調度到該Quota。

說明

Quota規則非常靈活,尤其是Settings規則項。配置時應當盡量保守地運用,防止規則過多給後期營運帶來困難。

  1. 登入MaxCompute控制台,在左上方選擇地區。

  2. 在左側導覽列,選擇管理配置 > 配额(Quota)管理 。

  3. Quota管理頁面,點擊一級Quota左側image 表徵圖,展開後可查看二級Quota列表。

  4. 單擊目標二級Quota對應操作列的规则配置

  5. 在彈出的Quota规则配置對話方塊,單擊添加规则或單擊已存在規則操作列的克隆建立規則。參數配置如下:

    • 一個規則配置的多重專案、作業類型、作業Settings為與(and)關係。

    • 規則添加完成,等待約5分鐘後才會生效。

    單擊展開查看參數配置詳情

    參數

    說明

    规则名称

    • 自訂Quota規則名稱。

    • 支援字母開頭,包含字母、數字和底線(_)。

    规则模式

    Quota規則啟動並執行模式,取值如下。

    • NORMAL:普通模式。

      若作業特徵匹配Quota規則,則作業調度到該Quota運行。

      • 當作業匹配某個Quota規則時,作業就會調度到該Quota運行。

      • 當作業同時匹配多個Quota規則時,作業會調度到最早建立的Quota運行。

      • 當作業無法匹配任何一個Quota規則時,這個作業就會選擇Project預設的Quota。儘管此時作業不匹配預設 Quota的規則。

      • 當通過作業層級指定Quota指定了一個etl_1Quota,則該作業將會調度到etl_1 Quota運行,即使此作業不匹配etl_1 Quota的規則。

    • EXCLUSIVE:排他模式。

      若作業特徵匹配Quota規則,則作業調度到該Quota運行。反之禁止作業調度到該Quota運行。

      舉例說明與普通模式的區別:

      • 假設etl_2Quota是Project_2關聯的預設Quota,etl_2設定了排他模式規則。當Project_2發起的作業無法匹配etl_2 Quota的規則,此時作業也無法選擇預設Quota,會導致提交作業報錯(與普通模式規則的區別:若etl_2只有普通模式規則,此時作業是可以調度到etl_2中啟動並執行)。

      • 通過set odps.task.wlm.quota=etl_3 (i.e. use quota etl_3)命令指定了一個Quota etl_3,若etl_3設定了排他模式規則,且作業特徵不匹配該規則,提交作業會報錯(與普通規則的區別:若etl_3只有普通規則,此時作業是可以調度到etl_3中啟動並執行)。

    • ANTI:禁止模式。

      若作業特徵匹配Quota規則,作業禁止調度到該Quota運行,會優先調度到所屬專案的預設計算Quota運行,如果當前專案的預設計算Quota也是該Quota,那麼會調度到當前Region下最早建立的Quota運行(包括隨用隨付Quota)。

    重要

    排他模式規則和禁止模式規則優先順序高於普通模式規則。即如果作業不匹配Quota A的某個排他模式規則或者匹配某個禁用模式規則。則作業無論是否匹配Quota A的普通規則,或被手動指定到Quota A,都無法調度到Quota A運行。

    项目

    選擇需要配置到規則裡的專案,最多可選擇50個專案。不選則表示所有專案。

    作业类型

    選擇需要配置到規則裡的作業類型。

    作業類型取值如下:

    • SQL:SQL作業

    • SQLRT:查詢加速SQL作業

    • SQLCost:SQL預估作業

    • LOT:MapReduce作業

    • CUPID:Spark或Mars作業

    • AlgoTask:機器學習作業

    • MaxFrame:分散式運算引擎MaxFrame作業

    • Graph:圖計算作業

    預設為空白,表示選擇所有作業類型。

    作业优先级

    • 輸入需要配置到規則裡的作業優先順序。

    • 輸入0-9優先順序區間。例如,[0,3] 表示優先順序為0、1、2、3優先順序的作業。

    • 不填則表示所有優先順序。

    作业Owner(账号ID)

    • 輸入需要配置到規則裡的作業Owner uid,多個uid為或(or)關係,請換行分隔,最多可輸入50個uid。

    • 若輸入RAM使用者uid需要加上p4_首碼,例如p4_12344566777

    • 不填則表示所有作業Owner。

    作业Settings

    • 請輸入作業Settings中的Key Value,格式為Key=Value,無需加上引號。多個參數為與(and)關係,請換行分隔,最多可輸入5個。

    • 例如,所有DataWorks調度發起的補資料作業都在當前Quota運行,可在作業Settings中輸入SKYNET_DAGTYPE=3,詳情請參見補資料作業隔離

    • 不填則表示所有Settings。

    專案、作業類型、作業優先順序、作業所有者(UID)及作業Settings中,至少應有一個參數不為空白,其餘為空白的參數則表示匹配所有選項。

應用樣本

查詢加速作業調度

查詢加速作業調度

  • 加速Quota和回退Quota。

    查詢加速作業需要同時準備兩個Quota:

    • 一個是加速Quota(類型為互動式

    • 一個是回退Quota (類型為批處理)。

    當作業在加速Quota中執行逾時或者因作業類型等原因被加速Quota拒絕執行時,系統會重新在回退Quota中提交作業。通過配置Quota規則,可以將一個Project或Jobowner同時加入一個加速Quota和一個回退Quota來實現上述邏輯。

  • 按Project、Jobowner等開啟查詢加速。

    建立互動式類型Quota時為不同的Quota配置不同的ProjectList規則項,實現按Project開啟互動式Quota。

補資料作業隔離

補資料作業隔離

補資料作業(即重刷歷史資料的作業)在回溯時間跨度較大時會消耗大量計算資源。為避免影響日常作業的正常運行,建議單獨建立一個 Quota,並配置相應規則專門用於執行補資料作業。

例如,DataWorks 調度任務在發起補資料作業時,會固定向作業Settings中傳入參數 SKYNET_DAGTYPE:3。基於此特徵,可配置如下 Quota 規則:

  • 建立一個Quota命名為refill,對refillQuota配置規則。如果目標是:所有DataWorks的調度發起的補資料作業都預設到refill Quota裡執行。配置普通模式規則,只需要在作業Settings裡輸入SKYNET_DAGTYPE=3即可。

  • 也可以進行更加細粒度的配置。例如,只希望P1 Project,作業優先順序5 ~ 9之間的補資料作業到refillQuota執行。配置普通模式規則,專案選擇P1,優先順序輸入[5,9]作業Settings輸入SKYNET_DAGTYPE=3

    說明

    此處優先順序是MaxCompute的優先順序,不是DataWorks基準優先順序。MaxCompute的優先順序 = 9 - DataWorks基準優先順序

隔離不同角色的作業

隔離不同角色的作業

作業可能由不同的業務人員發起,例如資料分析作業、定時報表任務作業、補資料作業等等。同時可能也來自不同的部門,每個部門資源預算也不一樣。需要建立多個Quota,讓不同角色的作業在不同的Quota中執行。

通常,通過專案作業Owner作業類型優先順序作業Settings幾個維度即可區分出作業的角色。

  • 當不同角色的作業使用不同的Project時:

    可以將Project名稱配置到期望Quota的規則專案中。

  • 當不同角色的作業由不同的人員提交時:

    可以將作業Owner的uid配置到期望Quota的規則項作業Owner中。

  • 當不同角色的作業有不同的配置時:

    可以通過作業Settings來區分角色。作業Settings是指作業提交的時候同時提交的set xxx=xxx;語句 ,有些是自訂,有些是系統預設加上的。如,通過DataWorks 發起的作業會預設設定一些參數資訊,以便對作業進行識別。

  • 當不同的角色提交不同的作業類型時:

    可以通過作業類型區分。例如通過PAI平台提交的機器學習的任務,作業類型ALGO。通過MaxCompute提交的普通SQL查詢,作業類型SQL

如上規則項也可以結合起來使用,實現更細粒度的作業調度控制。