如何启用CGroup限制YARN CPU使用率

如何启用CGroup限制YARN CPU使用率

0872-7.1.4-如何启用CGroup限制YARN CPU使用率https://mp.weixin.qq.com/s/6wARFLJWEb2rlZE6si9uug

为什么要限制yarn cpu的使用率?

cpu和core executor有什么关系 和我们说的几核几线程什么关系?

其实我理解的就是我们在spark上说的core就是几核几线程的 几线程,我们申请核的目的主要是为了计算,可以看作算力....,也就是说我们spark任务每次运行需要xxG内存,和xxcore的算力来处理任务。愚见。 

node09这台服务器为16核32线程,我们在yarn里分配该机器为39.53 GB内存,32core(这里我觉得的分配的core不对,但不是重点)

测试

spark-submit --class org.apache.spark.examples.SparkPi     --master yarn-client --conf spark.dynamicAllocation.enabled=false  --num-executors 1     --driver-memory 512m     --executor-memory 512m     --executor-cores 1  spark-examples.jar 100000

注意后面的100000是为了让任务跑多点,持续的时间长好看到现象。

--spark.dynamicAllocation.enabled=false 是为了看单核的也就是占的cpu

----num-executors 1  executor-cores 1   是为了看一个core的现象

提交任务后

到node03 查看cpu情况

 

 可以看到最开始的时候cpu占了140% 后面109 %跑到最后面稳定在90-100之间

那么这时候有个问题了,

我是num-executors 1  executor-cores 1  一台服务器上只用一个core按道理最多跑出一个核的100%的cpu,跑多了有啥影响呢?

作者原话

单个Vcore的使用率也可以超过100%,如果集群中CPU 使用率高的场景较多的情况下,因为超配的情况,就会出现即使有些作业能够分配Vcore,但是却没有实际物理cpu资源可调度,从而导致应用慢的情况。 

举例。

我现在同时跑30个这种任务只申请一个core,按道理就是30G内存+30个core(假设都在这台机器),但是实际是回占用30G内存+30*1.4=42个cpu,本身是32线程,最多32个cpu,那么就会导致最多22个任务(22*14=30.8cpu)被运行,还有几个任务申请到了core和内存,但是这个core没用,因为实际的物理cpu全部被占用了

———————————————————————————————————————————

上面都是为了说明这个cpu超限制问题。

那么问题来了,怎么解决?按照作者说的,通过cgroup限制。其实这玩意就是虚拟核。

类似4核八线程,本身只有4核,但是能够模拟出8核出来,所以我们当作8核用。

这个cgroup是啥 就是把8核再虚拟下,例如虚拟2倍成16核,那么我们提交任务的时候还是

num-executors 1  executor-cores 1  ,实际上只申请了0.5核,也就是只会跑出50%的cpu

但是其中这里有个问题?我之前1核也跑出了140的cpu,这个0.5核按道理也可以跑出70的!!!

但是最后肯定是稳定在50%cpu。

同时这么做有什么好处和后果?

好处,将核更为细化,比如有的小任务就要0.5核就够了,

<property>
<name>yarn.nodemanager.resource.count-logical-processors-as-cores</name>
<value>true</value>
<description>是否将虚拟核当cpu 核心数</description>
</property>
<property>
<name>yarn.nodemanager.resource.detect-hardware-capabilities</name>
<value>true</value>
<description>YARN 自动探测CPU和内存</description>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>-1</value>
<description>关闭虚拟vcore配置,如物理机有启用超线程不关闭该参数无法读取到超线程核数</description>
</property>
<property><name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
<value>2.5</value>
<description>物理核与vcore的配比倍数</description>
</property>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值