如何管理應(yīng)用級(jí)別的資源和任務(wù)優(yōu)先級(jí)
對(duì)于業(yè)務(wù)規(guī)模較大的應(yīng)用而言,調(diào)度的穩(wěn)定性和核心任務(wù)的時(shí)效性是至關(guān)重要的。本文介紹如何管理應(yīng)用級(jí)別的資源和任務(wù)優(yōu)先級(jí)。
背景信息
一些第三方的資源管理系統(tǒng)(例如Mesos和Yarn),能夠?qū)崿F(xiàn)CPU和內(nèi)存級(jí)別的資源管控,而您使用自己的Worker通過(guò)客戶端接入SchedulerX,所以SchedulerX作為通用的任務(wù)調(diào)度平臺(tái),無(wú)法實(shí)現(xiàn)CPU和內(nèi)存級(jí)別的管控,也無(wú)法通過(guò)第三方的資源管理系統(tǒng)進(jìn)行管控,實(shí)現(xiàn)的是任務(wù)實(shí)例數(shù)量和優(yōu)先級(jí)的管控。
應(yīng)用場(chǎng)景
應(yīng)用級(jí)別的資管和任務(wù)優(yōu)先級(jí)管理主要適用于業(yè)務(wù)、數(shù)據(jù)規(guī)模較大的調(diào)度場(chǎng)景。
例如,一個(gè)數(shù)據(jù)平臺(tái)的應(yīng)用,每天夜里會(huì)執(zhí)行成千上萬(wàn)的報(bào)表,如果沒(méi)有資源管理,應(yīng)用可能會(huì)因?yàn)槌?fù)荷而發(fā)生故障。同時(shí),一些核心報(bào)表也可能會(huì)有極強(qiáng)的時(shí)效性,必須在某個(gè)時(shí)間前生成,會(huì)對(duì)任務(wù)的優(yōu)先級(jí)有強(qiáng)烈的需求。SchedulerX提供了資源管理和任務(wù)優(yōu)先級(jí)的功能。
資源管理
資源管理即管理應(yīng)用的任務(wù)實(shí)例數(shù)量,例如在創(chuàng)建應(yīng)用時(shí),為該應(yīng)用打開(kāi)了流控開(kāi)關(guān),并將任務(wù)實(shí)例并發(fā)數(shù)設(shè)置為1。再在該應(yīng)用下創(chuàng)建3個(gè)任務(wù),A、B和C,每個(gè)任務(wù)運(yùn)行一次,則任務(wù)A運(yùn)行中,而任務(wù)B和C在池子中等待運(yùn)行,而不會(huì)被丟棄。
任務(wù)優(yōu)先級(jí)管理
任務(wù)優(yōu)先級(jí)是應(yīng)用級(jí)別的,即優(yōu)先級(jí)僅在單應(yīng)用內(nèi)生效,不影響其它應(yīng)用的任務(wù)。同一個(gè)應(yīng)用下,同時(shí)運(yùn)行的優(yōu)先級(jí)高的任務(wù)會(huì)被優(yōu)先執(zhí)行。
說(shuō)明一個(gè)應(yīng)用包含多個(gè)實(shí)例,不同優(yōu)先級(jí)的任務(wù)被調(diào)度到不同實(shí)例執(zhí)行,可能導(dǎo)致低優(yōu)先級(jí)任務(wù)被優(yōu)先執(zhí)行。SchedulerX通過(guò)可搶占的優(yōu)先級(jí)隊(duì)列規(guī)避了這種可能性,并保證同時(shí)在池子中等待的高優(yōu)先級(jí)任務(wù)被優(yōu)先執(zhí)行。更多信息,請(qǐng)參見(jiàn)可搶占的優(yōu)先級(jí)隊(duì)列。
管理應(yīng)用的任務(wù)實(shí)例資源
- 登錄分布式任務(wù)調(diào)度平臺(tái)。
- 在頂部菜單欄選擇地域。
在左側(cè)導(dǎo)航欄單擊應(yīng)用管理。
在應(yīng)用管理頁(yè)面選擇目標(biāo)命名空間,然后單擊創(chuàng)建應(yīng)用。
在創(chuàng)建應(yīng)用面板,單擊高級(jí)配置,然后打開(kāi)流控開(kāi)關(guān),并設(shè)置任務(wù)實(shí)例并發(fā)數(shù)。
任務(wù)實(shí)例并發(fā)數(shù)即應(yīng)用級(jí)別的任務(wù)隊(duì)列,超過(guò)并發(fā)數(shù)的任務(wù)實(shí)例不會(huì)被丟棄,而是放到池子中等待執(zhí)行。
配置項(xiàng)
描述
默認(rèn)值
應(yīng)用名
自定義設(shè)置應(yīng)用名稱。
無(wú)
應(yīng)用ID
應(yīng)用ID為應(yīng)用接入的GroupID,保證同一個(gè)命名空間下唯一,否則將創(chuàng)建失敗,可以和應(yīng)用名一致。
無(wú)
描述
對(duì)應(yīng)用的描述。
無(wú)
應(yīng)用類型
普通應(yīng)用:非K8s部署的應(yīng)用,或者對(duì)K8s任務(wù)沒(méi)有需求。
K8s應(yīng)用:應(yīng)用通過(guò)K8s部署,并且有需求要使用K8s任務(wù)。
普通應(yīng)用
版本
根據(jù)需求選擇版本。更多信息,請(qǐng)參見(jiàn)產(chǎn)品版本對(duì)比。
專業(yè)版
load5
不能超過(guò)客戶端機(jī)器CPU可用核數(shù)
0
內(nèi)存使用率
表示近5分鐘進(jìn)程內(nèi)存平均使用率不能大于該閾值,否則判斷客戶端機(jī)器繁忙。
90%
磁盤(pán)使用率
表示磁盤(pán)使用率不能大于該值,否則判斷客戶端機(jī)器不健康,狀態(tài)繁忙。
95%
是否觸發(fā)繁忙機(jī)器
機(jī)器繁忙時(shí)是否繼續(xù)觸發(fā)客戶端執(zhí)行。
打開(kāi)
高級(jí)配置
任務(wù)最大數(shù)量
一個(gè)分組最多支持的Job數(shù)量。
1000
自動(dòng)擴(kuò)容
選擇是否自動(dòng)擴(kuò)容。開(kāi)啟時(shí),需要設(shè)置全局任務(wù)數(shù)。
關(guān)閉
流控
選擇是否流控。開(kāi)啟時(shí),需要設(shè)置任務(wù)實(shí)例并發(fā)數(shù)。
關(guān)閉
管理應(yīng)用的任務(wù)優(yōu)先級(jí)
- 登錄分布式任務(wù)調(diào)度平臺(tái)。
- 在頂部菜單欄選擇地域。
- 在左側(cè)導(dǎo)航欄選擇任務(wù)管理。
- 在任務(wù)管理頁(yè)面,選擇目標(biāo)命名空間,單擊創(chuàng)建任務(wù)。
在創(chuàng)建任務(wù)面板的基本配置配置向?qū)ы?yè),設(shè)置優(yōu)先級(jí)。
創(chuàng)建任務(wù)的其它參數(shù)及后續(xù)步驟,請(qǐng)參見(jiàn)創(chuàng)建調(diào)度任務(wù)。
配置項(xiàng)
描述
任務(wù)名
任務(wù)名稱。
描述
任務(wù)描述,盡量簡(jiǎn)潔地描述業(yè)務(wù),便于后續(xù)搜索。
應(yīng)用ID
任務(wù)所屬分組。可以在下拉列表中選擇。
任務(wù)類型
指任務(wù)所實(shí)現(xiàn)的語(yǔ)言,當(dāng)前支持Java、Shell、Python、Go、http、Node.js、xxljob和DataWorks類型,其中Shell、Python和Go會(huì)彈出編輯框,在編輯框中編寫(xiě)任務(wù)腳本。
執(zhí)行模式
執(zhí)行模式,這里特指任務(wù)執(zhí)行的模式,當(dāng)前支持以下模式。
單機(jī)運(yùn)行:隨機(jī)選擇一臺(tái)機(jī)器執(zhí)行。
廣播運(yùn)行:所有機(jī)器同時(shí)執(zhí)行并等待全部結(jié)束。
可視化MapReduce:Map模型,子任務(wù)300以下,有子任務(wù)列表。
專業(yè)版可支持至1,000以下,且支持業(yè)務(wù)關(guān)鍵字查詢。
內(nèi)存MapReduce:Map模型,子任務(wù)執(zhí)行信息采用內(nèi)存存儲(chǔ),速度快,子任務(wù)50,000以下,無(wú)子任務(wù)列表。
磁盤(pán)MapReduce:Map模型,子任務(wù)執(zhí)行信息采用磁盤(pán)文件存儲(chǔ),吞吐量大,子任務(wù)1,000,000以下,無(wú)子任務(wù)列表。
分片運(yùn)行:類似 Elastic-job模型,配置分片參數(shù),可以將分片平均分給多個(gè)客戶端執(zhí)行。支持多語(yǔ)言版本。
說(shuō)明當(dāng)選擇了不同的執(zhí)行模式后,高級(jí)設(shè)置中的參數(shù)會(huì)隨之變化。
優(yōu)先級(jí)
任務(wù)的優(yōu)先級(jí),高優(yōu)先級(jí)任務(wù)會(huì)優(yōu)先執(zhí)行。
任務(wù)參數(shù)
任意字符串,可以在運(yùn)行時(shí)通過(guò)上下文獲取。
高級(jí)配置
任務(wù)失敗重試次數(shù)
默認(rèn)值:0。
任務(wù)失敗重試間隔
默認(rèn)值:30s。
任務(wù)并發(fā)數(shù)
同一個(gè)Job同一時(shí)間running的實(shí)例個(gè)數(shù)。
清理策略
任務(wù)執(zhí)行歷史記錄的清理策略。
保留記錄數(shù)
任務(wù)歷史執(zhí)行記錄的保留記錄數(shù)。
可搶占的優(yōu)先級(jí)隊(duì)列
一個(gè)應(yīng)用包含多個(gè)實(shí)例,不同優(yōu)先級(jí)的任務(wù)被調(diào)度到不同實(shí)例執(zhí)行,可能導(dǎo)致低優(yōu)先級(jí)任務(wù)被優(yōu)先執(zhí)行。SchedulerX通過(guò)可搶占的優(yōu)先級(jí)隊(duì)列規(guī)避了這種可能性,并保證同時(shí)在池子中等待的高優(yōu)先級(jí)任務(wù)被優(yōu)先執(zhí)行。
創(chuàng)建一個(gè)示例應(yīng)用,并為該應(yīng)用打開(kāi)流控開(kāi)關(guān),并設(shè)置任務(wù)實(shí)例并發(fā)數(shù)為1,請(qǐng)參見(jiàn)管理應(yīng)用的任務(wù)優(yōu)先級(jí)。
為該應(yīng)用創(chuàng)建3個(gè)任務(wù),優(yōu)先級(jí)分別設(shè)置為高、中、低。請(qǐng)參見(jiàn)管理應(yīng)用的任務(wù)優(yōu)先級(jí)。
在該應(yīng)用的任務(wù)管理頁(yè)面依次在中優(yōu)先級(jí)任務(wù)、低優(yōu)先級(jí)任務(wù)和高優(yōu)先級(jí)任務(wù)的操作列,單擊運(yùn)行一次。
觀察執(zhí)行結(jié)果。
由于中優(yōu)先級(jí)任務(wù)運(yùn)行的時(shí)候,隊(duì)列中是空的,所以中優(yōu)先級(jí)直接被執(zhí)行。
中優(yōu)先級(jí)任務(wù)執(zhí)行完成后,高優(yōu)先級(jí)任務(wù)會(huì)搶占低優(yōu)先級(jí)任務(wù)的位置被優(yōu)先執(zhí)行。