Yarn提供的web界面可以看到applications历史数据,Yarn Web UI的列表数据如图:
这部分数据的展现方式是前台分页,意思就是比如有2w的历史数据,将一次全部加载,第一次非常慢,后续操作很快。
列表数据最终调用到org.apache.hadoop.yarn.server.resourcemanager.webapp.AppsBlock类中
在render方法中有下面代码
可以数据是从RMContext中获得的。在RMContext的实现类RMContextImpl中可以详细知道数据存在什么里面,是ConcurrentHashMap
那整个集群跑的applications的数据都放到这个Map中,时间长了,数据量上来怎么 办?有关于数量控制的配置,并在RMAppManager对这个Map的数据超过配置进行remove操作。相见如下截图
YarnConfiguration中的配置
RMAppManager中的重要代码
可以默认配置值是1w,实际经验是这个值保留平均每天作业数的2到3倍就可以,就是保留数据2,3天。不然使用1w数据确实很大,前台显示缓慢也会给resourcemanager带来不必要的压力和性能瓶颈。
可以修改yarn-site.xml中的如下配置,修改默认值1w。
<property>
<name>yarn.resourcemanager.max-completed-applications</name> <value>2000</value> </property>
另外jobhistory的数量控制参考
<property>
<name>mapreduce.jobhistory.joblist.cache.size</name> <value>10</value> </property> etc/hadoop/mapred-site.xml参考