Job型资源组的优先级队列

本文介绍设置湖仓版Job型资源组的作业优先级和查看优先级的方法。

前提条件

  • AnalyticDB for MySQL集群的内核版本为3.1.6.3及以上版本。

  • 已创建Job型资源组,且提交作业时选择在Job型资源组中运行。

注意事项

暂不支持修改已提交(包含已提交未运行和已提交运行中)的作业的优先级。

功能概述

作业优先级指排队中的作业被分配资源的优先级。当湖仓版Job型资源组中并发执行的作业较多时,作业运行需要的资源会大于资源组的资源。AnalyticDB for MySQL湖仓版支持作业排队能力,新提交的作业会处于提交中的状态,不会失败。

在一些业务场景中,对作业执行和结果产出的先后有要求,例如,关键指标的产出依赖上游某个中间结果的产出时间,此时需要对上游处理的作业设置高优先级,保障该作业的资源。AnalyticDB for MySQL湖仓版Job型资源组内提供了作业优先级队列的能力,您可以设置作业的优先级,使不同作业进入不同的优先级队列(包括LOWEST队列、LOW队列、NORMAL队列和HIGH队列)。优先级高的作业会先运行。

设置作业优先级

作业优先级取值:HIGH、NORMAL、LOW和LOWEST。未设置优先级的作业默认为NORMAL。

ETL查询和普通查询(SELECT)的优先级为NORMAL。

不同的作业类型,作业优先级的设置方法不同,设置作业优先级的方法如下。

XIHE BSP设置作业优先级

Hint方式: /*+ query_priority= <优先级取值>*/

示例:设置XIHE BSP作业优先级为HIGH,使作业进入HIGH队列。

/*+ query_priority=HIGH*/ SELECT * FROM test_table;

Spark SQL设置作业优先级

SET方式:SET spark.adb.priority = <优先级取值>

示例:设置Spark SQL作业优先级为LOW,使作业进入LOW队列。

 SET spark.adb.priority = LOW;
 SELECT * FROM test_table;

Spark Batch设置作业优先级

配置Config参数: "conf": { "spark.adb.priority": "<优先级取值>"}

示例:设置Spark Batch作业优先级为HIGH,使作业进入HIGH队列。

{
    "comments": [
        "-- Here is just an example of SparkPi. Modify the content and run your spark program."
    ],
    "args": [
        "1000"
    ],
    "file": "local:///tmp/spark-examples.jar",
    "name": "SparkPi",
    "className": "org.apache.spark.examples.SparkPi",
    "conf": {
        "spark.driver.resourceSpec": "medium",
        "spark.executor.instances": 2,
        "spark.executor.resourceSpec": "medium",
        "spark.adb.priority": "HIGH"
    }
}

查看作业优先级

查看XIHE BSP和Spark SQL作业优先级

登录云原生数据仓库AnalyticDB MySQL控制台,在作业开发>SQL开发页面的执行记录页签中查看作业的优先级。

控制台优先级..png

查看Spark Batch作业优先级

登录云原生数据仓库AnalyticDB MySQL控制台,在作业开发>Spark Jar开发页面的应用列表页签中查看作业的优先级。

Jar优先级..png