在 spark 2.3 中使用 G1GC 垃圾收集器
Using G1GC garbage collector with spark 2.3
我正在尝试将 G1GC 垃圾收集器用于 spark 作业,但我得到了一个
Error: Invalid argument to --conf: -XX:+UseG1GC
我尝试使用这些选项,但无法正常工作
spark-submit --master spark://192.168.60.20:7077 --conf -XX:+UseG1GC /appdata/bblite-codebase/test.py
和
spark-submit --master spark://192.168.60.20:7077 -XX:+UseG1GC /appdata/bblite-codebase/test.py
从 spark 调用 G1GC
收集器的正确方法是什么?
JVM 选项应作为 spark.executor.extraJavaOptions
/ spark.driver.extraJavaOptions
传递,即
--conf "spark.executor.extraJavaOptions=-XX:+UseG1GC"
这是在驱动程序和执行程序中配置垃圾收集设置的方法。
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
从 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
中的默认值以删除 driver/executor 的 GC 默认值并强制在 extraJavaOptions
中指定它,具体取决于您的用例。
我正在尝试将 G1GC 垃圾收集器用于 spark 作业,但我得到了一个
Error: Invalid argument to --conf: -XX:+UseG1GC
我尝试使用这些选项,但无法正常工作
spark-submit --master spark://192.168.60.20:7077 --conf -XX:+UseG1GC /appdata/bblite-codebase/test.py
和
spark-submit --master spark://192.168.60.20:7077 -XX:+UseG1GC /appdata/bblite-codebase/test.py
从 spark 调用 G1GC
收集器的正确方法是什么?
JVM 选项应作为 spark.executor.extraJavaOptions
/ spark.driver.extraJavaOptions
传递,即
--conf "spark.executor.extraJavaOptions=-XX:+UseG1GC"
这是在驱动程序和执行程序中配置垃圾收集设置的方法。
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
从 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
中的默认值以删除 driver/executor 的 GC 默认值并强制在 extraJavaOptions
中指定它,具体取决于您的用例。