配額組(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的使用許可權,具體操作步驟如下。
建立Quota
使用新版控制台建立Quota請參見配置Quota。
說明Quota名稱建議使用英文字母和數位組合。已經存在的中文Quota名稱可繼續使用。
授權
當前針對作業層級指定Quota功能的鑒權預設為所有帳號(包括阿里雲帳號)及角色都沒有許可權,需要單獨授權。
新增角色
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇 。
在租户管理頁面,單擊角色管理頁簽。
在角色管理頁簽,單擊新增角色,在彈出的新增角色對話方塊,填寫自訂角色名称和policy内容,然後單擊確定完成建立。
{ "Statement": [{ "Action": [ "odps:List", "odps:Usage"], "Effect": "Allow", "Resource": ["acs:odps:*:regions/*/quotas/*"]}], "Version": "1" }
將角色授權給需要進行作業層級指定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使用者授權步驟如下:
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇 。
在租户管理頁面,單擊用户管理頁簽。
在用户管理頁簽,單擊目標RAM使用者對應操作列的修改角色。
在彈出的编辑角色對話方塊,從待添加角色地區選取項目要為目前使用者配置的角色,並配置到已添加角色地區,單擊確定完成修改。
作業指定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規則項。配置時應當盡量保守地運用,防止規則過多給後期營運帶來困難。
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇 。
在Quota管理頁面,點擊一級Quota左側
表徵圖,展開後可查看二級Quota列表。單擊目標二級Quota對應操作列的规则配置。
在彈出的Quota规则配置對話方塊,單擊添加规则或單擊已存在規則操作列的克隆建立規則。參數配置如下:
一個規則配置的多重專案、作業類型、作業Settings為與(and)關係。
規則添加完成,等待約5分鐘後才會生效。
應用樣本
查詢加速作業調度
查詢加速作業調度
加速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的調度發起的補資料作業都預設到refillQuota裡執行。配置普通模式規則,只需要在作業Settings裡輸入SKYNET_DAGTYPE=3即可。也可以進行更加細粒度的配置。例如,只希望
P1Project,作業優先順序在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。
如上規則項也可以結合起來使用,實現更細粒度的作業調度控制。