改版通知

巨人肩膀网站已全新改版。若您仍依赖旧站功能或数据,欢迎联系我们,我们会协助处理。联系我们

YARNcpu内存方面的优化

ckckck2025年1月10日4 浏览

参数优化

YARN之CPU核心参数

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

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

  3. yarn.scheduler.maximum-allocation-vcores
    单个任务可申请的最多虚拟CPU个数,默认是32。对于一个CPU核数较多的集群来说,上面的默认配置显然是不合适的。在测试集群中,4个节点每个机器CPU核数为31,留一个给操作系统,可以配置为:根据经验,物理core:vcores=1:2

YARN内存核心参数

YARN允许用户配置每个节点上可用的物理内存资源,注意,这里是“可用的”,因为一个节点上的内存会被若干个服务共享,比如一部分给YARN,一部分给HDFS,一部分给HBase等,YARN配置的只是自己可以使用的,配置参数如下:

  1. yarn.nodemanager.resource.memory-mb
    表示该节点上YARN可使用的物理内存总量,默认是8192(MB)。如果节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能探测节点的物理内存总量。

  2. yarn.scheduler.minimum-allocation-mb
    单个容器可申请的最少物理内存量,默认是1024(MB)。如果一个容器申请的物理内存量少于该值,则该对应的值改为这个数。

  3. yarn.scheduler.maximum-allocation-mb
    单个容器可申请的最多物理内存量,默认是8192(MB)。

Container合理配置检查

计算每台机子最多可以拥有多少个container,可以使用下面的公式:

plaintext 复制代码
containers = min (2*CORES, 1.8*DISKS, (Total available RAM) / MIN_CONTAINER_SIZE)

说明:

  • CORES 为机器CPU核数
  • DISKS 为机器上挂载的磁盘个数
  • Total available RAM 为机器总内存

每个 Container 占用的内存大小公式:

plaintext 复制代码
RAM-per-container = max(MIN_CONTAINER_SIZE, (Total Available RAM)/containers)

Node Label + CGroup

完成资源隔离和对单个/单组进程进行精细化的资源限制。

Node-Label相关配置,加在yarn-site.xml里面,目前只有capacity scheduler支持比较好。CGroup 功能集成在 LinuxContainerExecutor 中,所以要使用 CGroup 功能,必须设置 container-executor 为 LinuxContainerExecutor。同时需要配置 NM 的 Unix Group,这个是可执行的二进制文件 container-executor 用来做安全验证的,需要与 container-executor.cfg 里面配置的一致。

以下是cgroup常见核心参数:


end