---
title: 计算Executor相关参数经验值
description: "计算Executor相关参数经验值的最终结果是为了使CPU和内存最大化利用，从而提升资源利用率和任务执行效率。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark2xhdp_05_0020.html
sourcePath: /source/zh/kunpengbds/ecosystemEnable/Spark/kunpengspark2xhdp_05_0020.html
indexId: df526926487ef5f96a5e7031ecb9ef54ace3a35ea592f55dbf45f4fdc063a48c74
---
# 计算Executor相关参数经验值

#### 目的

计算Executor相关参数经验值的最终结果是为了使CPU和内存最大化利用，从而提升资源利用率和任务执行效率。


#### 方法

在实际测试中发现，鲲鹏处理器的NUMA特性与Yarn的NUMA感知功能对任务性能影响较大，因此需要考虑如何合理分配Container（即Executor）数量，确保Container（即Executor）能均衡分布在所有NUMA node上，同时结合计算节点数量确定Executor数量的基础倍数，使得资源能够被均衡利用。

1. 确认鲲鹏处理器的NUMA特性（如2个NUMA node）及Yarn的计算节点数量（如3个计算节点），从而确定Executor数量的基础倍数（如2个NUMA node和3个计算节点的场景下为6的倍数）。
2. 确定Executor数量范围。
  基于每个计算节点的NUMA node数（如2个NUMA node）×计算节点数（如3个计算节点）×所需Executor数量（如实际任务所需Executor数量为2或3），计算Executor数量范围（如2×3×2=12至2×3×3=18，取12～18）。

3. 计算总核数与Executor核数分配。
  统计集群总虚拟核数（如288核），根据Executor数量（例如取15个）来计算单个Executor核数（288÷15=19.2，此处取18核），因为还要为系统调度与Driver保留计算资源（288-15×18=18核）。

4. 如果无法同时使CPU和内存满载运行，需要优先CPU满载，再根据GC日志判断是否需要增加内存。
5. 如果是内存密集型任务，逐步调整内存至接近满载，此时CPU可能留有一定的余量，但需保持Executor内存与核数的比例约等于总内存/总核数的比例。
