日常使用中,用户反馈数据查询出不来,查看结果存放表后无数据,这个平台很多年运行正常没有出现过类似问题,怀疑是Spark任务没有执行,马上查看Spark日志发现OOM日志:
一、开始的弯路
ERROR SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[Executor task launch worker-0,5,main]
java.lang.OutOfMemoryError
at java.io.ByteArrayOutputStream.hugeCapacity(Unknown Source)
明显的Executor内存溢出,通过参数spark.executor.memory=12G尝试解决,测试下还是继续OOM,
二、继续分析
1、通过日志定位到代码Spark SQL 就是简单的拉取MySQL表中的数据加到内存中进行计算,先查表数据发现该表数据中有9000+万数据。由于内存剩余不多无法继续加大executor执行内存,以免影响正常业务导致其他服务不稳定