spark異常篇-OutOfMemory:GC overhead limit exceeded

執行如下代碼時報錯

# encoding:utf-8
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession


conf = SparkConf().setMaster('yarn')
sc = SparkContext(conf=conf)
spark = SparkSession(sc)
rdd = spark.read.csv('/spark/gps/GPS1.csv')
print rdd.count()
print rdd.repartition(10000).count()
print rdd.repartition(10000).collect()  # 報錯 spark-OutOfMemory:GC overhead limit exceeded

執行命令

spark-submit --master yarn bigdata.py

報錯內容

spark-OutOfMemory:GC overhead limit exceeded

 

在執行 count 時沒什麼問題,各種參數影響不大;但是在執行 collect 時,總是報錯

 

原因分析

1. collect 導致數據回傳 Driver,致使 Driver 內存溢出

解決方法是增加 Driver 內存

spark-submit --master yarn --executor-cores 4 --driver-memory 3G  bigdata.py

 

2. executor-core 數量太多,導致多個 core 之間爭奪 GC 時間以及資源,最後導致大部分時間都花在了 GC 上

解決方法是減少 core 數量

spark-submit --master yarn --executor-cores 1  bigdata.py

 

 

 

 

參考資料:

https://blog.csdn.net/amghost/article/details/45303315

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章