前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >yarn UI中appliaction展示个数分析

yarn UI中appliaction展示个数分析

原创
作者头像
腾讯云大数据
发布2018-05-03 20:56:05
2.6K0
发布2018-05-03 20:56:05
举报
文章被收录于专栏:公有云大数据平台弹性 MapReduce

一 背景

客户在使用我们的EMR产品时一天大概提交2000个appliaction,但是yarn的UI界面仅仅展示出了100多个历史application信息,影响了客户查阅历史信息。

二 源码分析

yarn提供的WEB界面可以展示历史application,如下图所示:

前端页面仅仅是展示application信息,application的详细信息 可以从RMContext中获取。RMContext的实现类RMContextImpl存储着所有Appliaction信息,但是存储Application的个数确实由RMAppManager控制。

RMAppManager在RM中的作用是管理所有application,比如通过submitApplication,finishApplication,recoverApplication提交,结束,恢复application。

RMApp是ResourceManager中用于维护一个Application生命周期的数据结构,它的实现是RMAppImpl,该类维护了一个Application状态机,记录了一个Application可能存在的各个状态以及导致状态间转换的事件。

针对application的个数,RMAppManager中有两个变量来控制这个数量,

DEFAULT_RM_MAX_COMPLETED_APPLICATIONS:由yarn.resourcemanager.max-completed-applications参数控制,其意义是:

DEFAULT_RM_STATE_STORE_MAX_COMPLETED_APPLICATIONS:由yarn.resourcemanager.state-store.max-completed-applications参数控制

(完成应用程序的最大数量的RM状态存储,默认情况下等于DEFAULT_RM_MAX_COMPLETED_APPLICATIONS,当第二个变量大于第一个变量时,在构造方法中maxCompletedAppsInMemory会被初始化等于maxCompletedAppsInStateStore。)

当一个APP完成时(KILLED, FINISHED,FAILED都属于完成状态),RMAppManager会调用如下方法:

该方法调用finishAppliaction去结束一个application的生命周期,必将app的个数记录起来,然后使用checkAppNumCompletedLimit方法检查app个数是否超过阈值,如果超过就将RMContext中存储的application剔除去一个。

三 总结

我们EMR配置的个数是150,DEFAULT_RM_MAX_COMPLETED_APPLICATIONS的默认值是10000。实际经验是这个值保留平均每天作业数的2到3倍就可以,就是保留数据2,3天。不然使用1w数据确实很大,前台显示缓慢也会给resourcemanager带来不必要的压力和性能瓶颈。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 背景
  • 二 源码分析
  • 三 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档