Apache spark 火花驱动器内存泄漏
我使用了Spark 2.1.1,升级到了最新版本2.4.4。我从Spark UI观察到驱动程序内存不断增加,在长时间运行之后,我出现了以下错误:java.lang.OutOfMemoryError:GC开销限制超过了 在Spark 2.1.1中,驱动程序内存消耗(存储内存选项卡)极低,运行ContextCleaner和BlockManager后,内存正在减少 另外,我测试了Spark版本2.3.3、2.4.3,我也有同样的行为 如何重现此行为: 创建一个非常简单的应用程序(streaming count_file.py)来重现这种行为。此应用程序从目录中读取CSV文件,计算行数,然后删除已处理的文件Apache spark 火花驱动器内存泄漏,apache-spark,Apache Spark,我使用了Spark 2.1.1,升级到了最新版本2.4.4。我从Spark UI观察到驱动程序内存不断增加,在长时间运行之后,我出现了以下错误:java.lang.OutOfMemoryError:GC开销限制超过了 在Spark 2.1.1中,驱动程序内存消耗(存储内存选项卡)极低,运行ContextCleaner和BlockManager后,内存正在减少 另外,我测试了Spark版本2.3.3、2.4.3,我也有同样的行为 如何重现此行为: 创建一个非常简单的应用程序(streaming c
import os
from pyspark.sql import SparkSession
from pyspark.sql import functions as F
from pyspark.sql import types as T
target_dir = "..."
spark=SparkSession.builder.appName("DataframeCount").getOrCreate()
while True:
for f in os.listdir(target_dir):
df = spark.read.load(f, format="csv")
print("Number of records: {0}".format(df.count()))
os.remove(f)
print("File {0} removed successfully!".format(f))
提交代码:
spark-submit
--master spark://xxx.xxx.xx.xxx
--deploy-mode client
--executor-memory 4g
--executor-cores 3
--queue streaming count_file.py
具有相同行为的测试案例:
- 我使用默认设置(spark defaults.conf)进行了测试
- 添加spark.cleaner.periodicGC.interval 1min(或更短)
- 转动spark.cleaner.referenceTracking.blocking=false
- 以群集模式运行应用程序
- 增加/减少执行者和驱动者的资源
- 我在driver和executor-XX:+UseG1GC-XX:InitiatingHeapOccupencyPercent=35-XX:ConcGCThreads=12中使用extraJavaOptions进行了测试
- 操作系统:Ubuntu 16.04.3 LTS
- Java:jdk1.8.0_131(也使用jdk1.8.0_221进行测试)
- Python:Python 2.7.12
- Spark UI存储内存超时增加:
- Spark中可能存在内存泄漏: