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