一、目的
在静态服务池中分配资源
使用动态资源池,配置资源,yarn中资源调度
推荐配置
二、资源管理overview
hadoop应用对集群资源的争抢
资源管理的目标
确保关键任务获取合理资源
协调用户组之间的资源争抢
阻止一个用户占用过多资源
资源管理的工具
使用linux的组(cgroups)
- 用于不同组件之间的分配
- 通过cdh的静态服务池来配置
何时使用?如果有很多非yarn的任务,比如hbase和impala或者说是邮件服务器、ftp服务器,此场景适宜于静态服务池。
配置项?
内存硬限制:绝对不能超过
内存软限制:可以超过,如果出现竞争,会把超过软限制的部分释放。硬限制一定要高于软限制的。软限制是下限。
CPU共享:
IO权重:
如何配置?通过linux的cgroups(linux的内核机制)来设置服务的上下限(比如mr和impala)
调度(yarn)和准入控制,通过动态资源池
调度器
解决container何时分给哪个应用。可以建立分配资源的规则,在有无竞争的情况下分配的会不同。
container是划分资源的单位
- 3种调度器
FIFO,先到先得。
Capacity,资源分配到pool,应用提交到queue,而pool和queue存在对应关系。每个pool内部是先进先出。
实场中,spark给一个pool,hive给一个pool,spark任务放到sparkQueue,spark任务在sparkPool中是先进先出,但sparkQueue和hiveQueue之间是Capacity的,也就是按比例
fair,CDH5默认的,也是生产中推荐的,这里的公平指的是按权重公平,并不是资源平均分。
fair
在公平调度器中,pool就是queue
默认情况下,每个用户都会对应一个queue,默认是root.用户名
池有层级关系,用户名的池的根池叫root。root是个根池。如下图:
root根池有2个子池,Alice和Bob,分别有15G的资源上限,但这15G是动态分配的,用的时候才分配。
分配规则:2种,一种只看内存;另一种都看,有一种主导资源。
1.只按内存,不考虑cpu。如下例子:
一共30G,Alice已经分了15,Bob已经分了5,2个pools分别继续需要10,此时会把剩下的10全部给Bob。所谓的公平,是按需。
2. 主导资源
最小参数
最小参数,优先级最高
比如如下3个queue,总共30,生产队列最小要20,Alice和Bob没有设置最小,demand的意思是正在运行的任务需要的资源,则首先把20分给Production。
3examples:
Procution没有正在运行的任务,则即使设置了最小,也不会分配
如果2个最小加起来超过total,则按min的比例分配
权重
可以替代最小资源选项,同样高度下,增加杯子的宽度,可以装更多东西。
weight默认是1
examples:
因为P设置了min=5,先把5给P,此时剩下25,因为B的weight是2,???
资源抢占
如果一个任务等了很长时间还没轮到,就会插队。
抢占分2种,公平和优先保证最小。
配置步骤:
先配置调度器
配置动态资源池
动态资源池配置
简称DRP,表示一组资源和一个调度策略的和。如果设置了静态服务池,则DRP不能超过静态服务池,比如在静态服务池中设置了yarn占用40%,则DRP不会超过40%
为什么配置DRP?
可以按时间来设置资源供给,比如月末任务多,会在月末增加资源供给
配置集,比如月末,生产的权重可以设为1,平时为2
可以设置应用和池的映射
placement rules,决定应用必须在哪个池跑
池内部的应用竞争资源也有3种规则?
用户的应用提交限制
限制一个用户提交的任务同一时刻运行的总个数
如何设置?
通过min、max、weights
配置集
添加DRP
公平调度器的配置
每10秒钟刷一次,所以改了不需要重启。
yarn的配置参数
1.在节点页面可以查看当前节点的资源被哪些服务使用
2.节点的资源不可能全给yarn用,所以在静态服务池中要设置上限,设置完之后,yarn的资源主要是NM,有2个参数用来给NM配内存和cores
memory-mb :NM节点中yarn任务可用的最大内存,推荐是用总的 - 非yarn任务(包括DN进程需要的)
cpu-vcores:节点物理cpu核数 - 1
表示一个RM(其实是container)的最小mb和cores
RM的增量
The task’s request thar are not multiples of these incremental-allocation values will be rounded up to the nearest increments
如果任务的请求不是这些增量分配值的倍数,则将四舍五入到最接近的增量
mr的map和reduce的内存,reduce建议是map的2倍
am的内存,这个不需要太高
堆内,不能超过map和reduce
example
默认设置
推荐
impala配置
impala没有使用yarn,所以需要单独设置资源限制
impala admission默认关闭
impala和mr同时在集群运行时