使用G1GC垃圾收集器与Spark 2.3

8
我正在尝试为Spark作业使用G1GC垃圾收集器,但是我遇到了一个问题。
Error: Invalid argument to --conf: -XX:+UseG1GC

我尝试使用这些选项,但无法使其正常工作

spark-submit --master spark://192.168.60.20:7077 --conf -XX:+UseG1GC /appdata/bblite-codebase/test.py

and

spark-submit --master spark://192.168.60.20:7077 -XX:+UseG1GC /appdata/bblite-codebase/test.py

如何从Spark中正确调用G1GC收集器?

3个回答

11

应将JVM选项作为 spark.executor.extraJavaOptions / spark.driver.extraJavaOptions 进行传递。

 --conf "spark.executor.extraJavaOptions=-XX:+UseG1GC"

4
这是您可以在驱动程序和执行器中配置垃圾回收设置的方法。
spark-submit --master spark://192.168.60.20:7077 \
 --conf "spark.driver.extraJavaOptions=-XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" \
 --conf "spark.executor.extraJavaOptions=-XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps" \
 /appdata/bblite-codebase/test.py

1

从Spark 2.4.3开始,这将不适用于驱动程序extraJavaOptions,它会产生一个错误。

Conflicting collector combinations in option list; please refer to the release notes for the combinations allowed

由于默认的spark-defaults.conf包含了这个,所以出现了这种情况。
spark.executor.defaultJavaOptions -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:OnOutOfMemoryError='kill -9 %p' -XX:+UseParallelGC -XX:InitiatingHeapOccupancyPercent=70
spark.driver.defaultJavaOptions  -XX:OnOutOfMemoryError='kill -9 %p' -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxHeapFreeRatio=70 -XX:+CMSClassUnloadingEnabled

已经包含了一个GC设置,而设置两个GC选项会导致它报错。因此,您可能需要:

--conf "spark.executor.defaultJavaOptions=-XX:+UseG1GC"
--conf "spark.driver.defaultJavaOptions=-XX:+UseG1GC"

并且添加其他您想要传播的默认值。
或者,您可以在spark-defaults.conf中编辑默认值,以删除驱动程序/执行程序的GC默认值,并强制在extraJavaOptions中指定,具体取决于您的用例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接