更新时间:2022-02-22 GMT+08:00

任务优先级

操作场景

集群的资源竞争场景如下:

  1. 提交两个低优先级的应用Job 1和Job 2。
  2. 正在运行中的Job 1和Job 2有部分task处于running状态,但由于集群或队列资源容量有限,仍有部分task未得到资源而处于pending状态。
  3. 提交一个较高优先级的应用Job 3,此时会出现如下资源分配情况:当Job 1和Job 2中running状态的task运行结束并释放资源后,Job 3中处于pending状态的task将优先得到这部分新释放的资源。
  4. Job 3完成后,资源释放给Job 1、Job 2继续执行。

用户可以在YARN中配置任务的优先级。任务优先级是通过ResourceManager的调度器实现的。

操作步骤

设置参数“mapreduce.job.priority”,使用命令行接口或API接口设置任务优先级。

  • 命令行接口。

    提交任务时,添加-Dmapreduce.job.priority=<priority>参数。

    <priority>可以设置为:

    • VERY_HIGH
    • HIGH
    • NORMAL
    • LOW
    • VERY_LOW
  • API接口。

    用户也可以使用API配置对象的优先级。

    设置优先级,可通过Configuration.set("mapreduce.job.priority", <priority>)Job.setPriority(JobPriority priority)设置。