计算Executor相关参数经验值
目的
计算Executor相关参数经验值的最终结果是为了使CPU和内存尽可能被充分利用,从而提升资源利用率和任务执行效率。
方法
在实际测试中发现,鲲鹏处理器的NUMA特性与Yarn的NUMA感知功能对任务性能影响较大,因此需要考虑如何合理分配Container(即Executor)数量,确保Container(即Executor)能均衡分布在所有NUMA node上,同时结合计算节点数量确定Executor数量的基础倍数,使得资源能够被均衡利用。
- 确认鲲鹏处理器的NUMA特性(如2个NUMA node)及Yarn的计算节点数量(如3个计算节点),从而确定Executor数量的基础倍数(如2个NUMA node和3个计算节点的场景下为6的倍数)。
- 确定Executor数量范围。
基于NUMA node数(如2个NUMA node)×计算节点数(如3个计算节点)×所需资源数(如实际任务所需资源数为2或3),计算Executor数量范围(如2×3×2=12至2×3×3=18,取12~18)。
- 计算总核数与Executor核数分配。
统计集群总虚拟核数(如288核),根据Executor数量(例如取15个)来计算单个Executor核数(288÷15=19.2,此处取18核),因为还要预留核数给系统调度与Driver(288-15×18=18核)。
- 如果无法同时使CPU和内存满载运行,需要优先CPU满载,再根据GC日志判断是否需要增加内存。
- 如果是内存密集型任务,逐步调整内存至接近满载,此时CPU可能留有一定的余量,但需保持Executor内存与核数的比例约等于总内存/总核数的比例。
父主题: Spark调优