計(jì)算資源-Quota使用
配額組(Quota)是MaxCompute的計(jì)算資源池,為MaxCompute中的計(jì)算作業(yè)提供所需計(jì)算資源(CPU及內(nèi)存)。在MaxCompute中支持根據(jù)計(jì)算作業(yè)對(duì)計(jì)算資源的需求,指定匹配的Quota,助力您高效使用計(jì)算資源。本文為您介紹如何使用MaxCompute的Quota。
背景信息
MaxCompute的計(jì)算資源配額組支持使用方式如下。
通過Project關(guān)聯(lián)默認(rèn)計(jì)算Quota,實(shí)現(xiàn)Project提交的作業(yè)使用此Quota進(jìn)行計(jì)算。
作業(yè)級(jí)別指定使用計(jì)算Quota(use quota),通過此功能可以支持將一個(gè)Project里的作業(yè)指定到不同的Quota進(jìn)行計(jì)算,包括指定包年包月、按量計(jì)費(fèi)的Quota。作業(yè)級(jí)別指定的Quota優(yōu)先級(jí)大于Project默認(rèn)的Quota。
通過對(duì)Quota配置規(guī)則條件,實(shí)現(xiàn)滿足規(guī)則條件的作業(yè)可調(diào)度到對(duì)應(yīng)Quota。
配額組(Quota)使用邏輯圖如下所示。
Project設(shè)置默認(rèn)Quota
Project設(shè)置默認(rèn)計(jì)算Quota ,即此Project發(fā)起的作業(yè)默認(rèn)會(huì)使用默認(rèn)Quota的資源進(jìn)行計(jì)算,無需其他設(shè)置。新建項(xiàng)目時(shí)可以直接選擇關(guān)聯(lián)默認(rèn)Quota,也可以通過控制臺(tái)項(xiàng)目管理對(duì)項(xiàng)目進(jìn)行默認(rèn)Quota切換,詳情請(qǐng)參見配置項(xiàng)目。
作業(yè)級(jí)別指定Quota
作業(yè)級(jí)別指定Quota主要是在作業(yè)前面通過命令進(jìn)行指定,此功能會(huì)校驗(yàn)作業(yè)所有者是否有該Quota的使用權(quán)限,具體操作步驟如下。
新建Quota。
使用新版控制臺(tái)新建Quota請(qǐng)參見配置Quota。
說明Quota名稱建議使用英文字母和數(shù)字的組合。已經(jīng)存在的中文Quota名稱可繼續(xù)使用。
授權(quán)。
當(dāng)前針對(duì)作業(yè)級(jí)別指定Quota功能的鑒權(quán)默認(rèn)是所有賬號(hào)(包括阿里云賬號(hào))和角色都沒有權(quán)限,需要進(jìn)行授權(quán)操作。
新增角色。
登錄MaxCompute控制臺(tái),在左上角選擇地域。
在左側(cè)導(dǎo)航欄單擊租戶管理。
在租戶管理頁面,單擊角色管理。
在角色管理頁簽,單擊新增角色。
在新增角色對(duì)話框,自定義角色名稱和使用如下權(quán)限策略內(nèi)容。
{ "Statement": [{ "Action": [ "odps:List", "odps:Usage"], "Effect": "Allow", "Resource": ["acs:odps:*:regions/*/quotas/*"]}], "Version": "1" }
參數(shù)說明如下。
參數(shù)
說明
Action
指定被授予的操作權(quán)限名稱。單次授權(quán)可以指定多個(gè)操作,可根據(jù)實(shí)際情況自行添加操作權(quán)限名稱。當(dāng)有多個(gè)操作時(shí),多個(gè)操作名稱之間使用半角逗號(hào)(,)分隔。操作取值請(qǐng)參見MaxCompute權(quán)限。
說明權(quán)限策略參數(shù)的詳細(xì)內(nèi)容請(qǐng)參見權(quán)限策略基本元素。
Resource
指定被授權(quán)的資源范圍,格式為
["acs:odps:Tenant/${tenant_id}:regions/${region_id}/quotas/${quota_name}"]
。["acs:odps:*:regions/*/quotas/*"]
含義為當(dāng)前租戶下所有Region下的所有Quota,可根據(jù)實(shí)際情況自行選擇具體Region和Quota。單擊確定,完成新增角色。
將角色授權(quán)給需要進(jìn)行作業(yè)級(jí)別指定Quota的賬號(hào)。
說明默認(rèn)主賬號(hào)或者擁有賬戶級(jí)別(tenant)Super_Administrator的子賬號(hào)可進(jìn)行授權(quán)操作。
由于授權(quán)對(duì)象的差別,會(huì)出現(xiàn)如下兩種場景。
對(duì)阿里云賬號(hào)授權(quán)。
目前需要通過如下命令對(duì)阿里云賬號(hào)授權(quán)。
--將阿里云賬號(hào)加到租戶內(nèi)并給阿里云賬號(hào)授權(quán)角色 Add tenant user <Aliyun$xxxx>; Grant tenant role <role_name> to user <Aliyun$xxxx>; --查看租戶role/user的權(quán)限 Show grants for tenant role <role_name>; Show grants for tenant user <user_name>; Show principals for tenant [role] <role_name>;
對(duì)RAM用戶授權(quán)。
在MaxCompute控制臺(tái)左側(cè)導(dǎo)航欄,單擊租戶管理>用戶管理。
在對(duì)應(yīng)RAM用戶的操作列,單擊修改角色。
在編輯角色對(duì)話框,選擇待添加角色區(qū)域中的目標(biāo)角色至已添加角色區(qū)域。
單擊確定,完成授權(quán)。
作業(yè)指定Quota。
在作業(yè)的Query前使用如下命令指定Quota。
set odps.task.wlm.quota=<quotaname>;
quotaname為Quota名稱,且僅對(duì)批處理類型的Quota有效。
說明若您是Spark作業(yè)指定Quota需要加配置項(xiàng)
spark.hadoop.odps.task.wlm.quota
填入<quotaname>
值。對(duì)于查詢加速作業(yè),需要注意以下幾點(diǎn):
交互式Quota不能通過如上命令直接指定,只能通過進(jìn)入查詢加速模式時(shí)被系統(tǒng)自動(dòng)選定,詳情請(qǐng)參見查詢加速(MCQA)。
set odps.task.wlm.quota=<quotaname>;
命令指定的Quota,含義是在交互Quota中執(zhí)行任務(wù)失敗后回退到quotaname
中執(zhí)行,而不是加速Q(mào)uota選擇quotaname
,因此查詢加速成功的作業(yè)消費(fèi)仍將計(jì)入作業(yè)執(zhí)行項(xiàng)目綁定的默認(rèn)計(jì)算Quota。當(dāng)不顯式指定
odps.task.wlm.quota
時(shí),交互式任務(wù)會(huì)嘗試首先回退到Quota規(guī)則指定的Quota。如果沒有配置Quota規(guī)則,任務(wù)將回退到項(xiàng)目的默認(rèn)Quota。
Quota規(guī)則
MaxCompute支持對(duì)Quota配置規(guī)則條件,指定滿足某些條件的作業(yè)可以被調(diào)度到對(duì)應(yīng)的Quota里執(zhí)行。
使用限制
包年包月、按量付費(fèi)(標(biāo)準(zhǔn)版和閑時(shí)版)二級(jí)Quota均支持規(guī)則配置。
每個(gè)二級(jí)Quota最多可配置10條規(guī)則。
每個(gè)規(guī)則中,項(xiàng)目、作業(yè)Owner參數(shù)最多可輸入50個(gè)對(duì)象,即一條規(guī)則最多可以指定給50個(gè)項(xiàng)目、50個(gè)作業(yè)Owner(uid)使用。
每個(gè)規(guī)則中,Settings最多輸入5個(gè)Key Value對(duì)。
每個(gè)規(guī)則中,作業(yè)優(yōu)先級(jí)的取值范圍是
[0, 9]
。
配置Quota規(guī)則
只要配置了Quota規(guī)則,規(guī)則都是生效的,如果不需要可以刪除,多個(gè)規(guī)則為或(or)關(guān)系,只要job匹配該Quota任意一個(gè)規(guī)則即可被調(diào)度或被禁止調(diào)度到該Quota。
Quota規(guī)則非常靈活,尤其是Settings規(guī)則項(xiàng)。配置時(shí)應(yīng)當(dāng)盡量保守的運(yùn)用,防止規(guī)則過多給后期運(yùn)維帶來困難。
登錄MaxCompute控制臺(tái),在左上角選擇地域。
在左側(cè)導(dǎo)航欄,選擇工作區(qū) > 配額(Quota)管理。
在Quota管理頁面,單擊一級(jí)Quota左側(cè)的圖標(biāo)可以展開二級(jí)Quota列表
單擊目標(biāo)二級(jí)Quota操作列的規(guī)則配置。
在Quota規(guī)則配置對(duì)話框,單擊添加規(guī)則或單擊已存在規(guī)則操作列的克隆新建規(guī)則,配置如下參數(shù)。
說明一個(gè)規(guī)則配置的多個(gè)項(xiàng)目、作業(yè)類型、作業(yè)Settings為與(and)關(guān)系。
規(guī)則添加完成,等待約5分鐘后才會(huì)生效。
參數(shù)說明如下。
參數(shù)
說明
規(guī)則名稱
自定義Quota規(guī)則名稱。
支持字母開頭,包含字母、數(shù)字和下劃線(_)。
規(guī)則模式
Quota規(guī)則運(yùn)行的模式,取值如下。
NORMAL:普通模式。
若作業(yè)特征匹配Quota規(guī)則,則作業(yè)調(diào)度到該Quota運(yùn)行。
當(dāng)作業(yè)匹配某個(gè)Quota規(guī)則時(shí),作業(yè)就會(huì)調(diào)度到該Quota運(yùn)行。
當(dāng)作業(yè)同時(shí)匹配多個(gè)Quota規(guī)則時(shí),作業(yè)會(huì)調(diào)度到最早創(chuàng)建的Quota運(yùn)行。
當(dāng)作業(yè)無法匹配任何一個(gè)Quota規(guī)則時(shí),這個(gè)作業(yè)就會(huì)選擇Project默認(rèn)的Quota。盡管此時(shí)作業(yè)不匹配默認(rèn) Quota的規(guī)則。
當(dāng)通過作業(yè)級(jí)別指定Quota指定了一個(gè)
etl_1
Quota,則該作業(yè)將會(huì)調(diào)度到etl_1
Quota運(yùn)行,即使此作業(yè)不匹配etl_1
Quota的規(guī)則。
EXCLUSIVE:排他模式。
若作業(yè)特征匹配Quota規(guī)則,則作業(yè)調(diào)度到該Quota運(yùn)行。反之禁止作業(yè)調(diào)度到該Quota運(yùn)行。
舉例說明與普通模式的區(qū)別:
假設(shè)
etl_2
Quota是Project_2
關(guān)聯(lián)的默認(rèn)Quota,etl_2
設(shè)置了排他模式規(guī)則。當(dāng)Project_2發(fā)起的作業(yè)無法匹配etl_2
Quota的規(guī)則,此時(shí)作業(yè)也無法選擇默認(rèn)Quota,會(huì)導(dǎo)致提交作業(yè)報(bào)錯(cuò)(與普通模式規(guī)則的區(qū)別:若etl_2
只有普通模式規(guī)則,此時(shí)作業(yè)是可以調(diào)度到etl_2
中運(yùn)行的)。通過
set odps.task.wlm.quota=etl_3 (i.e. use quota etl_3)
命令指定了一個(gè)Quotaetl_3
,若etl_3
設(shè)置了排他模式規(guī)則,且作業(yè)特征不匹配該規(guī)則,提交作業(yè)會(huì)報(bào)錯(cuò)(與普通規(guī)則的區(qū)別:若etl_3
只有普通規(guī)則,此時(shí)作業(yè)是可以調(diào)度到etl_3
中運(yùn)行的)。
ANTI:禁止模式。
若作業(yè)特征匹配Quota規(guī)則,作業(yè)禁止調(diào)度到該Quota運(yùn)行,會(huì)優(yōu)先調(diào)度到所屬項(xiàng)目的默認(rèn)計(jì)算Quota運(yùn)行,如果當(dāng)前項(xiàng)目的默認(rèn)計(jì)算Quota也是該Quota,那么會(huì)調(diào)度到當(dāng)前Region下最早創(chuàng)建的Quota運(yùn)行(包括按量計(jì)費(fèi)Quota)。
重要排他模式規(guī)則和禁止模式規(guī)則優(yōu)先級(jí)高于普通模式規(guī)則。即如果作業(yè)不匹配Quota A的某個(gè)排他模式規(guī)則或者匹配某個(gè)禁用模式規(guī)則。則作業(yè)無論是否匹配Quota A的普通規(guī)則,或被手動(dòng)指定到Quota A,都無法調(diào)度到Quota A運(yùn)行。
項(xiàng)目
選擇需要配置到規(guī)則里的項(xiàng)目,最多可選擇50個(gè)項(xiàng)目。
作業(yè)類型
選擇需要配置到規(guī)則里的作業(yè)類型。
作業(yè)類型取值如下:
SQL:SQL作業(yè)
SQLRT:查詢加速SQL作業(yè)
SQLCost:SQL預(yù)估作業(yè)
LOT:MapReduce作業(yè)
CUPID:Spark或Mars作業(yè)
AlgoTask:機(jī)器學(xué)習(xí)作業(yè)
作業(yè)優(yōu)先級(jí)
輸入需要配置到規(guī)則里的作業(yè)優(yōu)先級(jí)。輸入
0-9
優(yōu)先級(jí)區(qū)間,如:[0,3]
表示優(yōu)先級(jí)為0、1、2、3優(yōu)先級(jí)的作業(yè)。作業(yè)Owner(uid)
輸入需要配置到規(guī)則里的作業(yè)Owner uid,多個(gè)uid為或(or)關(guān)系,請(qǐng)換行分隔,最多可輸入50個(gè)uid。
若輸入RAM用戶的uid需要加上
p4_
前綴,例如p4_12344566777
;若輸入RAM角色的uid需加上v4_
前綴,例如v4_12344566776
。作業(yè)Settings
請(qǐng)輸入作業(yè)Settings中的Key Value,格式為
Key=Value
,無需加上引號(hào)。多個(gè)參數(shù)為與(and)關(guān)系,請(qǐng)換行分隔,最多可輸入5個(gè)。例如,所有DataWorks調(diào)度發(fā)起的補(bǔ)數(shù)據(jù)作業(yè)都在當(dāng)前Quota運(yùn)行,可在作業(yè)Settings中輸入
SKYNET_DAGTYPE=3
,詳情請(qǐng)參見補(bǔ)數(shù)據(jù)作業(yè)隔離。單擊確定。
應(yīng)用示例
查詢加速作業(yè)調(diào)度
加速Q(mào)uota和回退Quota。
查詢加速作業(yè)需要同時(shí)準(zhǔn)備兩個(gè)Quota,一個(gè)是加速Q(mào)uota(類型是交互式),一個(gè)是回退Quota (類型為批處理)。當(dāng)作業(yè)在加速Q(mào)uota中執(zhí)行超時(shí)或者因作業(yè)類型等原因被加速Q(mào)uota拒絕執(zhí)行時(shí),系統(tǒng)會(huì)將作業(yè)重新在回退Quota中提交。您可以通過Quota規(guī)則,將一個(gè)Project或Jobowner同時(shí)加入一個(gè)加速Q(mào)uota和一個(gè)回退Quota來實(shí)現(xiàn)上述邏輯。
按Project、Jobowner等打開查詢加速。
創(chuàng)建交互式類型Quota時(shí)為不同的Quota配置不同的
ProjectList
規(guī)則項(xiàng),實(shí)現(xiàn)按Project打開交互式Quota。
補(bǔ)數(shù)據(jù)作業(yè)隔離
補(bǔ)數(shù)據(jù)作業(yè)即重刷數(shù)據(jù)作業(yè),如果需要補(bǔ)很長時(shí)間的數(shù)據(jù)則會(huì)消耗很多資源,但是又不希望影響日常作業(yè)運(yùn)行,那么您可以單獨(dú)創(chuàng)建一個(gè) Quota并設(shè)置好規(guī)則專門運(yùn)行補(bǔ)數(shù)據(jù)作業(yè)。例如,DataWorks的調(diào)度任務(wù)發(fā)起補(bǔ)數(shù)據(jù)作業(yè)固定會(huì)傳參數(shù)
SKYNET_DAGTYPE:3
到作業(yè)Settings里,那么可以配置Quota規(guī)則如下:創(chuàng)建一個(gè)Quota命名為
refill
,對(duì)refill
Quota配置規(guī)則,如果目標(biāo)是:所有DataWorks的調(diào)度發(fā)起的補(bǔ)數(shù)據(jù)作業(yè)都默認(rèn)到refill
Quota里執(zhí)行。配置普通模式規(guī)則,只需要在作業(yè)Settings里輸入SKYNET_DAGTYPE=3
即可。也可以進(jìn)行更加細(xì)粒度的配置,例如,只希望
P1
Project,作業(yè)優(yōu)先級(jí)在5 ~ 9
之間的補(bǔ)數(shù)據(jù)作業(yè)到refill
Quota執(zhí)行。配置普通模式規(guī)則,項(xiàng)目選擇P1
,優(yōu)先級(jí)輸入[5,9]
,作業(yè)Settings輸入SKYNET_DAGTYPE=3
。說明此處優(yōu)先級(jí)是MaxCompute的優(yōu)先級(jí),不是DataWorks基線優(yōu)先級(jí)。
MaxCompute的優(yōu)先級(jí) = 9 - DataWorks基線優(yōu)先級(jí)
。
隔離不同角色的作業(yè)
作業(yè)可能由不同的業(yè)務(wù)人員發(fā)起,例如數(shù)據(jù)分析作業(yè)、定時(shí)報(bào)表任務(wù)作業(yè)、補(bǔ)數(shù)據(jù)作業(yè)等等,同時(shí)可能也來自不同的部門,每個(gè)部門資源預(yù)算也不一樣。需要建立多個(gè)Quota,讓不同角色的作業(yè)在不同的Quota中執(zhí)行。
通常,通過項(xiàng)目、作業(yè)Owner、作業(yè)類型、優(yōu)先級(jí)、作業(yè)Settings幾個(gè)緯度即可區(qū)分出作業(yè)的角色。
當(dāng)不同角色的作業(yè)使用不同的Project時(shí):可以將Project名稱配置到期望Quota的規(guī)則項(xiàng)目中。
當(dāng)不同角色的作業(yè)由不同的人員提交時(shí):可以將作業(yè)Owner的uid配置到期望Quota的規(guī)則項(xiàng)作業(yè)Owner中。
當(dāng)不同角色的作業(yè)有不同的配置時(shí),可以通過作業(yè)Settings來區(qū)分角色。作業(yè)Settings是指作業(yè)提交的時(shí)候同時(shí)提交的
set xxx=xxx;
語句 ,有些是自定義,有些是系統(tǒng)默認(rèn)加上的,如通過DataWorks 發(fā)起的作業(yè)會(huì)默認(rèn)設(shè)置一些參數(shù)信息,以便對(duì)作業(yè)進(jìn)行識(shí)別。當(dāng)不同的角色提交不同的作業(yè)類型時(shí):可以通過作業(yè)類型區(qū)分。例如通過PAI平臺(tái)提交的機(jī)器學(xué)習(xí)的任務(wù),作業(yè)類型是
ALGO
。通過MaxCompute提交的普通SQL查詢,作業(yè)類型是SQL
。
如上規(guī)則項(xiàng)也可以結(jié)合起來使用,實(shí)現(xiàn)更細(xì)粒度的作業(yè)調(diào)度控制。