python 内存不足报错_Spark排错与优化

本文详细介绍了在Spark运行过程中遇到的各种问题及其解决方案,包括Master和Worker内存不足导致的挂掉、shuffle错误、Executor与Task丢失、内存溢出、数据倾斜、任务不序列化等问题,并提供了相应的配置优化建议和参数调整策略。
摘要由CSDN通过智能技术生成

一. 运维

1. Master挂掉,standby重启也失效

Master默认使用512M内存,当集群中运行的任务特别多时,就会挂掉,原因是master会读取每个task的event log日志去生成Spark ui,内存不足自然会OOM,可以在master的运行日志中看到,通过HA启动的master自然也会因为这个原因失败。

解决

增加Master的内存占用,在Master节点spark-env.sh 中设置: export SPARK_DAEMON_MEMORY 10g # 根据你的实际情况

减少保存在Master内存中的作业信息 spark.ui.retainedJobs 500 # 默认都是1000

spark.ui.retainedStages 500

2. worker挂掉或假死

有时候我们还会在web ui中看到worker节点消失或处于dead状态,在该节点运行的任务则会报各种 lost worker 的错误,引发原因和上述大体相同,worker内存中保存了大量的ui信息导致gc时失去和master之间的心跳。

解决

增加Master的内存占用,在Worker节点spark-env.sh 中设置: export SPARK_DAEMON_MEMORY 2g # 根据你的实际情况

减少保存在Worker内存中的Driver,Executor信息 spark.worker.ui.retainedExecutors 200 # 默认都是1000

spark.worker.ui.retainedDrivers 200

二. 运行错误

1.shuffle FetchFailedException

错误提示

missing output location org.apache.spark.shuffle.MetadataFetchFailedException:

Missing an output location for shuffle 0

shuffle fetch faild org.apache.spark.shuffle.FetchFailedException:

Failed to connect to spark047215/192.168.47.215:50268

当前的配置为每个executor使用1core,5GRAM,启动了20个executor

解决

这种问题一般发生在有大量shuffle操作的时候,task不断的failed,然后又重执行,一直循环下去,直到application失败。

一般遇到这种问题提高executor内存即可,同时增加每个executor的cpu,这样不会减少task并行度。

spark.executor.memory 15G

spark.executor.cores 3

spark.cores.max 21

启动的execuote数量为:7个

execuoterNum = spark.cores.max/spark.executor.cores

每个executor的配置:

3core,15G RAM

消耗的内存资源为:105G RAM

15G*7=105G

可以发现使用的资源并没有提升,但是同样的任务原来的配置跑几个小时还在卡着,改了配置后几分钟就能完成。

2.Executor&Task Lost

错误提示

executor lost WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, aa.local):

ExecutorLostFailure (executor lost)

task lost WARN TaskSetManager: Lost task 69.2 in stage 7.0 (TID 1145, 192.168.47.217):

java.io.IOException: Connection from /192.168.47.217:55483 closed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值