ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 25.8 GB of 25.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead or disabling yarn.nodemanager.vmem-check-enabled because of YARN-4714.
1、考虑增加每个 task 的可用内存
// 增大Executor 内存
// 减少 executor-cores 数
2、增加memoryOverhead的值
set spark.yarn.executor.memoryOverhead=6G;
memoryOverhead参数:
是YARN资源管理器为每个executor分配的额外内存。
这部分内存不直接用于存储或计算数据,而是用于执行器运行时的各种开销,如操作系统、库和其他必要的进程。
默认情况下,memoryOverhead的计算方式是executor总内存(包括堆内存在内)的15%。
在处理大规模数据集或进行复杂计算时,可能需要增加memoryOverhead的值以确保足够的内存供各种运行时开销使用。