Spark内存溢出
- 修改脚本(耗费时间)
- 调整提交参数
Spark内存
- Driver
一般不重要
- Executor
堆内内存溢出
堆外内存溢出
脚本参数
--master yarn \
--driver-memory 4G \ #driver内存
--executor-memory 30G \ #executor堆内内存
--executor-cores 5 \ #executor占用核数
--num-executors 10 \ #executor 个数
--queue spark \
--conf spark.yarn.executor.memoryOverhead=4096 \ #executor堆外内存
--conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
--conf spark.default.parallelism=1000 \ #分区数(task并行)
--conf spark.sql.shuffle.partitions=1000 \ #shuffle分区数
脚本调整
1."spark.executor.memory" 。将内存调大 #增加堆内内存
2."spark.executor.cores" 将core的个数调小。 #一个task至少占用一个核,减小并发,也就是减小资源占用
3.将"spark.yarn.executor.memoryOverhead"设置为最大值,可以考虑一下4096。这个数值一般都是2的次幂。 #增加堆外内存