---
title: Spark任务高并发场景下偶发NameNode服务被强制终止的解决方法
description: "在针对Spark任务开展并发测试时，当任务提交频率达到1800/h的高并发场景下，系统出现任务堆积现象，在此过程中偶发NameNode服务被强制终止的情况。"
url: https://www.hikunpeng.com/document/detail/zh/omniruntime/OmniAdvisor/kunpengbds_omniruntime_20_0542.html
sourcePath: /source/zh/omniruntime/OmniAdvisor/kunpengbds_omniruntime_20_0542.html
indexId: e2a1ffad27e843bd23ac08b993f30ab030a6e14f709a262c8b8fc9796b4a5a6a70
---
# Spark任务高并发场景下偶发NameNode服务被强制终止的解决方法

#### 问题现象描述

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


#### 关键过程、根本原因分析

1. 首先对NameNode的Log日志进行了详细查看，未发现明显异常信息。
2. 进一步使用dmesg命令查看系统内核日志，发现NameNode进程是被系统主动终止的，原因是系统内存不足。
  经过全面分析整个集群的任务处理流程，发现由于任务提交速度远超任务完成速度，导致在Spark YARN上提交但尚未执行的任务持续堆积。随着堆积任务数量的不断增加，Driver节点所消耗的系统内存急剧上升，最终触发了Linux系统的内存保护机制，系统为避免自身崩溃，选择终止了占用内存较大的NameNode进程。


#### 结论、解决方案及效果

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

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