Hadoop知识点(六)-YARN参数优化

Container
关于yarn的调优,就是调container
虚拟化的是内存+cpu的vcores组成的,是运行task任务的

1.生产如何调优container参数?

生产预留空间原因:

1.oom-kill机制
2.Linux系统防止夯住
3.给未来部署组件预留空间

假设128G 16物理core

1.1 系统装完 消耗1G
1.2 系统预留20%内存(包含1G)
    1>oom-kill机制
    2>Linux系统防止夯住
    3>给未来部署组件预留空间
    
128G*20%=25.6G==26G

1.3 假设只有DN NM节点
生产上部署一般遵循存储技术一体,就是计算时发现本节点有数据不需要去其他节点拉取,节省网络io
这种一般叫做 数据本地化 

生产上一般设置:
DN=2G 
NM=4G

128-26=102-2-4=96G 
全部用来设计给真正干活的container用,就是要将内存分配给container容器

1.4container内存
yarn.nodemanager.resource.memory-mb 默认为8G. 我们需要设置为96G
yarn.sheduler.minimum-allocation-mb=1G  极限情况下,96个container  
yarn.sheduler.maximum-allocation-mb=96G  极限情况下,1个container

说明sheduler是作业,是调度
container内存会自动增加,默认是1G递增,CDH yarn配置,但是一般都不需要调整

1.5 container vcore
yarn自己设计引入的概念 是vcore
设计初衷是考虑不同的机器的cpu的性能不一样,每个cpu计算的能力都不同
比如某个物理cpu是另外一个物理cpu的1倍,这是通过设置第一个物理虚拟cpu的vcore进行弥补这个差异。
如:下面是一个例子

如:下面是一个例子
物理的core:pcore
虚拟的core:vcore
第一台机器(配置好): pcore:vcore=1:2 16core:32core
第二台机(配置弱)器: pcore:vcore=1:1 16core:16core
现在生产上不考虑哪个机器是否配置好,统一配置 pcore:vcore=1:2

问题1:为什么要设置vcore 1:2呢?
答:在计算的过程中container容器需要vcore,并发的任务是靠vcore

pcore:vcore=1:2  16core:32core
pcore:vcore=1:1  16core:16core
yarn.nodemanager.resource.pcores-vcores-multiplier 2 表示是pcore:vcore=1:2

yarn.nodemanager.resource.cpu-vcores 32  #32个vcore
yarn.sheduler.minimum-allocation-mb=1G  极限情况下,96个vcores  
yarn.sheduler.maximum-allocation-mb=32G  极限情况下,1个vcores

1.2生产如何设置 突破口

cloudera公司推荐,一个container的vcore最好不要超过5个,那么设置4

yarn.scheduler.maximum-allocation-vcores 4 极限情况下,只有8个container 

1.3整合memory cpu

确定 4 vcore  8个container

yarn.nodemanager.resource.memory-mb  96G
yarn.scheduler.minimum-allocation-mb 1G    
yarn.scheduler.maximum-allocation-mb 12G   极限情况container 898G/8=12G
但是spark计算时内存有些指标比较大,那么这个参数必然调大,
那么这种理想化,完美化的设置必然被打破,到时以memory为主 

yarn.nodemanager.resource.cpu-vcores     8  
yarn.scheduler.minimum-allocation-vcores 1  
yarn.scheduler.maximum-allocation-vcores 4  #经验值  

2.YARN资源调度器

调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景,为此,yarn提供了多种调度器和可配置的策略提供我们选择

FIFO Scheduler 先进先出
Capacity Scheduler 计算
FairScheduler 公平 生产

2.1FIFO Scheduler 先进先出(相当于队列)

应用场景:系统资源(即container)

2.2Capacity Scheduler 调度器

有一个专门的队列用来运行小任务,
但是为小任务专门设置一个队列会预先占用一定的集群资源,
这就导致大任务的执行时间会落后于使用FIFO调度器时的时间。

2.3Fair Scheduler 生产上应用

我们不需要预先占用一定的系统资源,
Fair调度器会为所有运行的job动态的调整系统资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值