yarn Container 容器的优化

                                   yarn Container 容器的优化

我遇到了一个问题:

由于服务器是三台4核16G的小集群,   每启动一个容器就会占用 4 个虚拟核 ,这种情况下我的内存够用但是核数不够 ,这样的话 同时提交两个任务 基本上就挂起了 ,

我也找了很多种方式

最多的就是

充分利用cpu和内存

 yarn资源管理有虚拟核和虚拟内存的概念,可以将虚拟核、虚拟内存调整为物理机的两到三倍,增加任务数量,提高cpu使用率。

yarn.nodemanager.resource.cpu-vcores        虚拟核数,默认为8
yarn.scheduler.minimum-allocation-vcores    为每个Container分配的最少的vcore,默认为1
yarn.scheduler.maximum-allocation-vcores    为每个Container分配的最多的vcore,默认为4

yarn.nodemanager.resource.memory-mb         NM占用机器的内存大小
yarn.scheduler.minimum-allocation-mb        Container包含的最小内存
yarn.scheduler.maximum-allocation-mb        Container包含的最大内存
yarn.nodemanager.pmem-check-enabled         容器是否会执行物理内存限制,默认为True
yarn.nodemanager.vmem-check-enabled         容器是否会执行虚拟内存限制,默认为True
yarn.nodemanager.vmem-pmem-ratio            使用虚拟内存和物理内存的比值,默认为2.1

解决方式 1:

将你的虚拟核数增大 

yarn.nodemanager.resource.cpu-vcores  一台从节点可以调用的cpu的核数 , 一般是跟你服务器的核数相同,或者2倍,我这里直接改成了8 ,两台4核服务器,这样yarn 就有可能不会挂起了,因为yarn能够分配核数了 ,  但是任务执行的时间会加长 会变慢。

解决方案2     

控制一个Container容器分配多少vcores

我是修改了上面的核数,增加了yarn单台服务器能够调用8个核数虚拟核数,两台16核,然后控制每个Container最大可分配2个核数。

修改yarn.scheduler.maximum-allocation-vcores  每启动一个容器最大占用两个虚拟核 

方案1、方案2都调整后的结果

结果:看图

结果是在运行的时候稍微慢点,但是基本上没有问题了。不会因为核数不足而导致任务挂起了。
 

猜你喜欢

转载自blog.csdn.net/weixin_45592182/article/details/108364200