集群越大,跑的业务越多,越需要资源池管理。资源调度是yarn的核心。
EMR现在支持在业务视角操作yarn资源池了,资源池文档介绍了如何使用。
企业用户往往会选择使用fair调度类型的资源池。本文以一家大数据分析公司业务发展为故事背景,一步步的介绍如何使用fair调度。fair调度详细参数信息可参见官方文档
一个数据分析师
公司刚开始,业务团队只有小明一个数据分析师。一个人用整个集群,默认资源池配置即可。随便跑作业,随便杀作业。
三个数据分析师
公司发展,业务团队小明,张华,李萍三个数据分析师了。还用默认资源池不分队列,一个人把资源用满其他人就用不了了。杀作业很容易杀掉别人的作业,互相影响,出了问题无法定位。
于是采用三个人均分资源策略,创建三个资源池,只设置名字和权重1,管理访问控制的用户名。放置策略采用用户名为队列。gateway上建了三个操作系统账户xiaoming,zhanghua,liping,三个分析师用自己的系统账户提交作业,管理作业。
创建资源池-管理访问控制
资源池设置
设置放置规则
创建操作系统账户略。
最小资源保障
虽然权重均分了,但大家发现,如果小明跑任务已经占用了全部资源,张华,李萍跑任务依然要等待小明作业释放了部分资源才能跑起任务。这是因为权重只有分配资源时生效,已占用的资源不会释放。
所以要增加最小内存,内核数的配置,保障每个队列至少有这些资源可用,重要任务可以跑起来。每个队列保障32000MB内存,8内核数。
多部门混合使用
公司继续发展,除了业务部A,又成立了市场部B,营销部C。都要使用集群。业务上,分析任务也有了每天运行的生产任务和临时查数据,开发测试的日常任务的区别。
初步混用
为了管理各个部门的资源配置,系统管理员给各个部门创建了资源池,并控制各个资源池上限。每个部门资源池又创建了生产子队列,各个分析师的用户子队列。放置规则采用组名映射队列方式,gateway上给各部门创建用户组,每个部门的用户,生产任务各创建一个用户。
部门和用户队列
放置规则
生产任务保障
如果数据分析师日常任务占用了大量资源,生产任务可能得不到资源保障。需要配置抢占策略,确保生产任务能获得需要的资源。
生产资源池配置禁止抢占该资源池的资源,抢占份额为0.8,抢占超时时间为30秒。这样当生产任务不够权重的0.8,30秒后就会kill日常任务,给生产任务释放资源。