- 一般调整
- task 的日志出现
spark gc overhead limit exceeded
- 调大 executor-memory;
- 同时 executor core 数目可以调小一些,因为 executor 中每个 core 执行 task 都会消耗一些内存
- task 的日志出现
yarn container is running beyond virtual memory limits
的错误,一般 shuffle 时候可能会报- 调大堆外内存
spark.yarn.executor.memoryOverhead
,默认值为 max(0.1 * executorMemory, 384) - 调大输出的 parallelism:
df.repartition(并行数目).write.parquet("...")
- 调大堆外内存
- driver 的日志出现
gc overhead limit exceeded
- 调大 driver-memory
- task 的日志出现
- 使用 kryo serializer:
new SparkConf().set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
-
spark.memory.fraction
: 默认 0.6,表示执行内存+缓存内存占总内存的比例,可以调大 -
spark.memory.storageFraction
:默认 0.5,表示缓存内存占执行内存+缓存内存的最少保留比例。如果没有 persist 和 cache 操作,可以调小些,留出更多空间给 shuffle 操作 - shuffle 相关参数调优见:https://tech.meituan.com/2016/05/12/spark-tuning-pro.html
- 参考:
Spark 任务内存调优
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 翻译自Spark官网文档:https://spark.apache.org/docs/2.1.0/tuning.h...