加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Hadoop YARN:调度性能优化实践

发布时间:2019-08-03 07:46:18 所属栏目:教程 来源:世龙、廷稳
导读:副标题#e# 背景 YARN作为Hadoop的资源管理系统,负责Hadoop集群上计算资源的管理和作业调度。 美团的YARN以社区2.7.1版本为基础构建分支。目前在YARN上支撑离线业务、实时业务以及机器学习业务。 离线业务主要运行的是Hive on MapReduce, Spark SQL为主的

一般来说,在线业务系统的性能是用该系统能够承载的QPS和响应的TP99的延迟时间来评估,而调度系统与在线业务系统不同的是:调度系统的性能不能用RPC(ResourceManager接收NodeManager和AppMaster的RPC请求)的响应延迟来评估。原因是:这些RPC调用过程跟调度系统的调度过程是异步的,因此不论调度性能多么差,RPC响应几乎不受影响。同理,不论RPC响应多么差,调度性能也几乎不受影响。

业务指标-有效调度

首先从满足业务需求角度分析调度系统的业务指标。调度系统的业务目标是满足业务资源需求。指标是:有效调度(validSchedule)。在生产环境,只要validSchedule达标,我们就认为目前调度器是满足线上业务需求的。

定义validSchedulePerMin表示某一分钟的调度性能达标的情况。达标值为1,不达标值为0。

  1. validPending = min(queuePending, QueueMaxQuota) 
  2. if  (usage / total  > 90% || validPending == 0):   validSchedulePerMin = 1 //集群资源使用率高于90%,或者集群有效资源需求为0,这时调度器性能达标。 
  3. if (validPending > 0 &&  usage / total < 90%) : validSchedulePerMin = 0;//集群资源使用率低于90%,并且集群存在有效资源需求,这时调度器性能不达标。 
  • validPending表示集群中作业有效的资源需求量
  • queuePending表示队列中所有作业的资源需求量
  • QueueMaxQuota表示该队列资源最大限额
  • usage表示集群已经使用的资源量
  • tatal表示集群总体资源

设置90%的原因是:资源池中的每个节点可能都有一小部分资源因为无法满足任何的资源需求,出现的资源碎片问题。这个问题类似linux内存的碎片问题。由于离线作业的任务执行时间非常短,资源很快可以得到回收。在离线计算场景,调度效率的重要性远远大于更精确地管理集群资源碎片,因此离线调度策略暂时没有考虑资源碎片的问题。

validSchedulePerDay表示调度性能每天的达标率。 validSchedulePerDay = ΣvalidSchedulePerMin /1440

目前线上业务规模下,业务指标如下: validSchedulePerMin > 0.9; validSchedulePerDay > 0.99

系统性能指标-每秒调度Container数

调度系统的本质是为作业分配Container,因此提出调度系统性能指标CPS–每秒调度Container数。在生产环境,只要validSchedule达标,表明目前调度器是满足线上业务需求的。而在测试环境,需要关注不同压力条件下的CPS,找到当前系统承载能力的上限,并进一步指导性能优化工作。

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读