生产上的yarn资源调优的6个参数

准备知识

每个job提交到yarn执行的时候,都会分配container容器去运行,而这个容器需要资源才能运行,那这个资源就是cpu和内存,也就是每个任务container都需要CPU和内存,那么下面我们从CPU和内存去分析

yarn参数配置文件为yarn-site.xml

CPU资源调度

目前的CPU被划分为虚拟CPU(CPU virtual Core),这里的虚拟CPU是yarn自己引入的概念,因为每个服务器的CPU计算能力不一样,有的机器可能是其他机器计算能力的两倍,然后可以通过多配置几个虚拟CPU弥补差异。在yarn中,CPU的相关配置如下:

yarn.nodemanager.resource.cpu-vcores
表示该节点上YARN可使用的虚拟CPU个数,默认是8,注意,目前推荐将该值设值为与物理CPU核数数目相同。如果你的节点CPU核数不够8个,则需要调减小这个值,而YARN不会智能的探测节点的物理CPU总数。

yarn.scheduler.minimum-allocation-vcores
单个任务可申请的最小虚拟CPU个数,默认是1,如果一个任务申请的CPU个数少于该数,则该对应的值改为这个数。

yarn.scheduler.maximum-allocation-vcores
单个任务可申请的最多虚拟CPU个数,默认是4。

注意:这里说的cpu个数都是说的虚拟cpu,默认的是1个物理cpu=2个虚拟cpu

Memory资源调度

yarn一般允许用户配置每个节点上可用的物理资源,注意,这里是"可用的",不是物理内存多少,就设置多少,因为一个服务器节点上会有若干的内存,一部分给yarn,一部分给hdfs,一部分给hbase;Member相关的配置如下:

1.yarn.nodemanager.resource.memory-mb
设置该节点上yarn可使用的内存,默认为8G,如果节点内存资源不足8G,要减少这个值,yarn不会智能的去检测内存资源,一般这个设置yarn的可用内存资源

2.yarn.scheduler.minimum-allocation-mb
单个任务可申请的最小的内存大小,默认是1G,当内存不够时,会自动按照一定大小累加内存。

3.yarn.scheduler.maximum-allocation-mb
单个任务最大申请物理内存量,默认为8291MB

案例

如果有一个服务器16核,64G内存,我们应该如何配置上面的6个参数呢(一句话:资源最大化利用)

yarn.nodemanager.resource.cpu-vcores 虚拟core
这个参数根据自己生产服务器决定,比如公司服务器很富裕,那就直接1:1,设置成16,如果公司服务器不是很富裕,那就直接成1:2,设置成32,我们生产设置的是32

yarn.nodemanager.resource.memory-mb 总内存
生产上我们一般要预留15-20%的内存,那么可用内存就是64*0.8=51.2G,我们设置成50G就可以了(固定经验值)

yarn.scheduler.minimum-allocation-mb 单任务最小内存
如果设置成2G,那50/2 = 25,就是最多可以跑25个container
如果设置成3G,那50/3 = 16,就是最多可以跑16个container

yarn.scheduler.minimum-allocation-mb 单任务最少vcore
如果设置vcore = 1,那么32/1 = 32,就是最多可以跑32个container,如果设置成这个,根据上面内存分配的情况,最多只能跑25个container,vcore有点浪费
如果设置vcore = 2,那么32/2 = 16,就是最多可以跑16个container

yarn.scheduler.maximum-allocation-vcores 单任务最多vcore
一般就设置成4个,cloudera公司做过性能测试,如果cpu大于等于5之后,cpu利用率反而不是很好(固定经验值)

yarn.scheduler.maximum-allocation-mb 单任务最大内存
这个要根据自己公司业务设定,如果有大任务,需要5-6G内存,那就设置为8G

yarn.nodemanager.resource.memory-mb : 50G  计算总内存
yarn.nodemanager.resource.cpu-vcores : 32

yarn.scheduler.minimum-allocation-mb : 2G       25个C
yarn.scheduler.minimum-allocation-vcores: 1    32个C

yarn.scheduler.maximum-allocation-mb : 8G       6个C
yarn.scheduler.maximum-allocation-vcores : 4    8个C  
一个container的core 正常最大不要超过5  cloudera规定

这里有两个值可以确定,就是最大4个cpu,和内存总使用数时50G,其余四个参数可以根据业务实际情况做调整,反正始终记住:资源最大化利用 并不是100利用 而是让剩余越来越少 。
注意:只见过内存不够的时候 会自动累加,没有见过vcore不够的时候 会自动累加 , 是启动的指定的 spark executor-cores

还可以参考:
https://blog.csdn.net/qq_41301707/article/details/103540539?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.control

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言:本文档适用于新部署的HDP集群,需要修改默认参数值以提高集群的稳定性。 1.Mysql 修改mysql配置文...
    yinkp001阅读 4,252评论 0 0
  • 我司生产环境的大数据集群是用CDH部署的 版本有5.11.1 5.14.1 5.16.1 这三个版本. 这里主...
    guaren2009阅读 4,246评论 0 3
  • 开题引文: yarn是hadoop2.x引入的概念,hadoop1.x这个工作是MapReduce做的,在2.x引...
    BABA_777阅读 10,387评论 0 3
  • Year的资源管理模型 在实际系统中,资源本身是多维度的,包括CPU、内存、网络I/O和磁盘I/O等,因此,如果想...
    Shawn999阅读 879评论 0 0
  • 1.yarn---Memory调优 YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为...
    吃货大米饭阅读 4,094评论 0 2

友情链接更多精彩内容