博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Step by step,学习EMR集群的fair类型资源池
阅读量:6245 次
发布时间:2019-06-22

本文共 994 字,大约阅读时间需要 3 分钟。

集群越大,跑的业务越多,越需要资源池管理。资源调度是yarn的核心。

EMR现在支持在业务视角操作yarn资源池了,介绍了如何使用。

企业用户往往会选择使用fair调度类型的资源池。本文以一家大数据分析公司业务发展为故事背景,一步步的介绍如何使用fair调度。fair调度详细参数信息可参见

一个数据分析师

公司刚开始,业务团队只有小明一个数据分析师。一个人用整个集群,默认资源池配置即可。随便跑作业,随便杀作业。

三个数据分析师

公司发展,业务团队小明,张华,李萍三个数据分析师了。还用默认资源池不分队列,一个人把资源用满其他人就用不了了。杀作业很容易杀掉别人的作业,互相影响,出了问题无法定位。

于是采用三个人均分资源策略,创建三个资源池,只设置名字和权重1,管理访问控制的用户名。放置策略采用用户名为队列。gateway上建了三个操作系统账户xiaoming,zhanghua,liping,三个分析师用自己的系统账户提交作业,管理作业。

创建资源池-管理访问控制

16767fda5f836dc601e10165bef3bebf3889b6d9

资源池设置

b42faca52d2589fd69c7a53757a17f6819e92ee7b42faca52d2589fd69c7a53757a17f6819e92ee7

设置放置规则

95b6b11478c3cb8b8dc4889675556215b63c1687

创建操作系统账户略。

最小资源保障

虽然权重均分了,但大家发现,如果小明跑任务已经占用了全部资源,张华,李萍跑任务依然要等待小明作业释放了部分资源才能跑起任务。这是因为权重只有分配资源时生效,已占用的资源不会释放。

所以要增加最小内存,内核数的配置,保障每个队列至少有这些资源可用,重要任务可以跑起来。每个队列保障32000MB内存,8内核数。

fc808b3a17bc53d75732820583f245294a6d87fb

多部门混合使用

公司继续发展,除了业务部A,又成立了市场部B,营销部C。都要使用集群。业务上,分析任务也有了每天运行的生产任务和临时查数据,开发测试的日常任务的区别。

初步混用

为了管理各个部门的资源配置,系统管理员给各个部门创建了资源池,并控制各个资源池上限。每个部门资源池又创建了生产子队列,各个分析师的用户子队列。放置规则采用组名映射队列方式,gateway上给各部门创建用户组,每个部门的用户,生产任务各创建一个用户。

部门和用户队列

3568aaaef5dc01de0a05edb0b73c1b41b55be97c

放置规则

e6c0891de918856cdc662412bdd6f4d7e1b0fded

生产任务保障

如果数据分析师日常任务占用了大量资源,生产任务可能得不到资源保障。需要配置抢占策略,确保生产任务能获得需要的资源。

生产资源池配置禁止抢占该资源池的资源,抢占份额为0.8,抢占超时时间为30秒。这样当生产任务不够权重的0.8,30秒后就会kill日常任务,给生产任务释放资源。

068dae12bc2afaa9708e23295173a5ac7993f6bc

转载地址:http://gmlia.baihongyu.com/

你可能感兴趣的文章
Nginx安装
查看>>
Aix下查看内存命令
查看>>
[Android]JsonObject解析
查看>>
最好用的软件快速开发平台-全部源码-3800/套
查看>>
移动端fixed后 横竖屏切换时上部或下部出现空隙问题
查看>>
Django ORM 操作 必知必会13条 单表查询
查看>>
selenium 安装与 chromedriver安装
查看>>
ethereumjs/ethereumjs-vm-1-简介
查看>>
go标准库的学习-fmt
查看>>
iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
查看>>
Java集合框架中的快速失败(fail—fast)机制
查看>>
特殊的上下文选择符
查看>>
iphone-common-codes-ccteam源代码 CCUIApplication.m
查看>>
展开和折叠GridView行
查看>>
SharePoint PeopleEditor 控件的使用
查看>>
删除mysql__转
查看>>
python+selenium的使用
查看>>
python2.7中MySQLdb的安装与使用详解
查看>>
知乎技术方案初探[转]
查看>>
Java中的Thread与Runnable的区别
查看>>