
# 手动配置Yarn任务优先级
#### 操作场景
集群的资源竞争场景如下：
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)**设置。
  
 
