tez on yarn配置任务优先级

一、现状
当前yarn上任务只有队列间的资源抢占,队列内缺乏任务优先级配置,因此所有任务的优先级都是默认的,默认优先级的配置通过此参数配置yarn.scheduler.capacity.root.<leaf-queue-path>.default-application-priority,默认值为0;此外hive on tez的任务在maper阶段会尽可能申请所需的最大资源来运行,极端情况下如果存在一个有问题的任务一直占用集群所有资源会导致其他任务都无法运行,因此需要一种方式能够让重要的任务尽可能的抢占到资源。
当前yarn的队列资源调度使用的是capacity容量调度器,该调度器支持队列间和队列内抢占的,当前的集群配置也是启用了两类抢占方式的,但队列内的抢占依赖任务的优先级,从网上找到的内容是需要在任务运行前配置SET mapreduce.job.priority=50,尝试过没有效果,造成无效有两个原因:
一是最大优先级参数(yarn.cluster.max-application-priority)没有配置,hadoop官网可以查到该值得默认值是0,设置为大于最大优先级的值时均按最大优先级设置;
二是tez中设置任务优先级的参数确实不是mapreduce.job.priority,通过查看tez源码发现对应的参数应该为tez.am.application.priority,该值越大代表获取资源的优先级越高。


image.png

二、集群配置
增加最大优先级参数配置yarn.cluster.max-application-priority=100;意味着在配置任务优先级tez.am.application.priority时值不能大于该值。

三、使用方式
在hive sql运行前配置set tez.am.application.priority=【0到100之间的数字】
验证方式: 在yarn页面中找到对应任务,查看Application Priority值是否为配置的值。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 应用程序(Application)是用户编写的处理数据的程序的统称,它从YARN中申请资源以完成自己的计算任务.Y...
    tracy_668阅读 1,335评论 0 2
  • MapReduce MapReduce的架构 MapReduce是一个用于大规模数据处理的分布式计算模型MapRe...
    海边的贝壳林阅读 593评论 0 2
  • 1: yarn 资源调度的定义 2: yarn 资源调度的种类 在Yarn中有三种调度器可以选择:FIFO Sch...
    星星之火在心中阅读 3,223评论 0 0
  • 容量与分级设计 YARN为它正在调度的资源定义了最小分配和最大分配:每个为YARN运行worker的服务器都有一个...
    专职掏大粪阅读 776评论 0 0
  • 一产生背景 运维成本:如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群;进而增加运维成本,而共...
    曹振华阅读 4,289评论 0 5