鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

Spark任务高并发场景下偶发NameNode服务被强制终止的解决方法

问题现象描述

在针对Spark任务开展并发测试时,当任务提交频率达到1800/h的高并发场景下,系统出现任务堆积现象,在此过程中偶发NameNode服务被强制终止的情况。

关键过程、根本原因分析

  1. 首先对NameNode的Log日志进行了详细查看,未发现明显异常信息。
  2. 进一步使用dmesg命令查看系统内核日志,发现NameNode进程是被系统主动终止的,原因是系统内存不足。

    经过全面分析整个集群的任务处理流程,发现由于任务提交速度远超任务完成速度,导致在Spark YARN上提交但尚未执行的任务持续堆积。随着堆积任务数量的不断增加,Driver节点所消耗的系统内存急剧上升,最终触发了Linux系统的内存保护机制,系统为避免自身崩溃,选择终止了占用内存较大的NameNode进程。

结论、解决方案及效果

高并发场景下任务提交与完成速度失衡,引发任务堆积,进而导致Driver节点内存耗尽,最终致使NameNode进程被系统杀死。

通过合理调整任务提交策略,降低并发度,确保任务提交速度与集群处理能力相匹配,避免任务过度堆积,可规避该问题。