全部产品
Search
文档中心

开源大数据平台E-MapReduce:任务优先级

更新时间:Apr 16, 2026

当多个作业在同一队列中同时申请资源时,您可以通过设置作业优先级,保障高优先级作业优先获取资源。本文为您介绍如何为EMR Serverless Spark作业设置优先级。

前提条件

说明

任务优先级功能仅限白名单队列使用,需提交工单联系Serverless Spark团队开通。

背景信息

当多个作业在同一队列中同时申请资源时,系统按照以下规则分配资源:

  • 优先级排序:优先级高的作业优先申请资源。

  • 资源申请条件:队列空闲资源大于等于Driver所需资源时,作业成功申请资源;资源不足则进入排队等待,不会阻塞其他可满足的作业。

  • 动态资源继承:启用动态资源分配的作业,在运行中申请新增Executor时,继承原作业的优先级。

优先级说明

  • 取值范围:0~9 的整数,数值越大优先级越高。

  • 默认值:未设置优先级时,默认值为 0。

  • 生效对象

    • 支持自定义设置:批任务、流任务、通过 Gateway 提交的 Batch/Session 任务。

    • 系统默认优先级为 5(不支持自定义):会话资源、Livy Gateway、Kyuubi Gateway。

操作步骤

EMR Serverless Spark支持通过以下四种方式为作业设置优先级:

方式一:通过数据开发设置优先级

  1. 登录E-MapReduce控制台

    1. 在左侧导航栏,选择EMR Serverless > Spark

    2. Spark页面,单击目标工作空间名称。

    3. EMR Serverless Spark页面,单击左侧导航栏中的数据开发

  2. 创建或编辑批任务或流任务。

  3. 在任务的Spark配置中,添加如下配置:spark.emr.serverless.priority=9

    其中,9为优先级数值,取值范围为0~9,请根据实际业务需求设置。

  4. 保存并提交任务。

方式二:通过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,然后保存并提交工作流。