當多個作業在同一隊列中同時申請資源時,您可以通過設定作業優先順序,保障高優先順序作業優先擷取資源。本文為您介紹如何為EMR Serverless Spark作業設定優先權。
前提條件
已建立Serverless Spark工作空間。具體操作,請參見建立工作空間。
任務優先順序功能僅限白名單隊列使用,需提交工單聯絡Serverless Spark團隊開通。
背景資訊
當多個作業在同一隊列中同時申請資源時,系統按照以下規則分配資源:
優先順序排序:優先順序高的作業優先申請資源。
資源申請條件:隊列空閑資源大於等於Driver所需資源時,作業成功申請資源;資源不足則進入排隊等待,不會阻塞其他可滿足的作業。
動態資源繼承:啟用動態資源分派的作業,在運行中申請新增Executor時,繼承原作業的優先順序。
優先順序說明
取值範圍:0~9 的整數,數值越大優先順序越高。
預設值:未設定優先權時,預設值為 0。
生效對象:
支援自訂設定:批任務、流任務、通過 Gateway 提交的 Batch/Session 任務。
系統預設優先順序為 5(不支援自訂):會話資源、Livy Gateway、Kyuubi Gateway。
操作步驟
EMR Serverless Spark支援通過以下四種方式為作業設定優先權:
方式一:通過資料開發設定優先權
在左側導覽列,選擇EMR Serverless > Spark。
在Spark頁面,單擊目標工作空間名稱。
在EMR Serverless Spark頁面,單擊左側導覽列中的資料開發。
建立或編輯批任務或流任務。
在任務的Spark配置中,添加如下配置:
spark.emr.serverless.priority=9其中,
9為優先順序數值,取值範圍為0~9,請根據實際業務需求設定。儲存並提交任務。
方式二:通過Gateway提交任務時設定優先權
通過Livy Gateway或Kyuubi Gateway提交任務時,可在Spark配置中添加優先順序參數。
Livy Gateway:在提交任務時,於Spark配置中添加:
spark.emr.serverless.priority=8。Kyuubi Gateway:在提交任務時,於Spark配置中添加:
spark.emr.serverless.priority=8。
方式三:通過spark-submit提交任務時設定優先權
在使用spark-submit命令提交任務時,通過--conf參數添加優先順序配置,樣本如下:
spark-submit \
--master spark://<gateway-endpoint> \
--conf spark.emr.serverless.priority=6 \
--class org.apache.spark.examples.SparkPi \
s3://your-bucket/spark-examples.jar 100方式四:通過工作流程設定優先權
批任務節點:繼承資料開發中Spark配置的優先順序設定值,無需額外配置。
SQL節點/Notebook節點:在節點的Spark配置中添加
spark.emr.serverless.priority=7,然後儲存並提交工作流程。