如何启用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有什么关系 和我们说的几核几线程什么关系?

如何启用CGroup限制YARN CPU使用率_第1张图片

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

如何启用CGroup限制YARN CPU使用率_第2张图片

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

如何启用CGroup限制YARN CPU使用率_第3张图片

测试

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情况

如何启用CGroup限制YARN CPU使用率_第4张图片

 如何启用CGroup限制YARN CPU使用率_第5张图片

如何启用CGroup限制YARN CPU使用率_第6张图片

 可以看到最开始的时候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全部被占用了如何启用CGroup限制YARN CPU使用率_第7张图片

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

上面都是为了说明这个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核就够了,

如何启用CGroup限制YARN CPU使用率_第8张图片


yarn.nodemanager.resource.count-logical-processors-as-cores
true
是否将虚拟核当cpu 核心数


yarn.nodemanager.resource.detect-hardware-capabilities
true
YARN 自动探测CPU和内存


yarn.nodemanager.resource.cpu-vcores
-1
关闭虚拟vcore配置,如物理机有启用超线程不关闭该参数无法读取到超线程核数

yarn.nodemanager.resource.pcores-vcores-multiplier
2.5
物理核与vcore的配比倍数

你可能感兴趣的:(hadoop,yarn,cpu)