【问题标题】:Spark: shuffle operation leading to long GC pauseSpark:shuffle 操作导致长时间的 GC 暂停
【发布时间】:2016-08-16 18:12:58
【问题描述】:

我正在运行Spark 2 并试图洗牌大约 5 TB 的 json。在Dataset 的改组期间,我遇到了很长的垃圾收集暂停:

val operations = spark.read.json(inPath).as[MyClass]
operations.repartition(partitions, operations("id")).write.parquet("s3a://foo")

是否有任何明显的配置调整来处理这个问题?我的配置如下:

spark.driver.maxResultSize 6G
spark.driver.memory 10G
spark.executor.extraJavaOptions -XX:+UseG1GC -XX:MaxPermSize=1G -XX:+HeapDumpOnOutOfMemoryError
spark.executor.memory   32G
spark.hadoop.fs.s3a.buffer.dir  /raid0/spark
spark.hadoop.fs.s3n.buffer.dir  /raid0/spark
spark.hadoop.fs.s3n.multipart.uploads.enabled   true
spark.hadoop.parquet.block.size 2147483648
spark.hadoop.parquet.enable.summary-metadata    false
spark.local.dir /raid0/spark
spark.memory.fraction 0.8
spark.mesos.coarse  true
spark.mesos.constraints  priority:1
spark.mesos.executor.memoryOverhead 16000
spark.network.timeout   600
spark.rpc.message.maxSize    1000
spark.speculation   false
spark.sql.parquet.mergeSchema   false
spark.sql.planner.externalSort  true
spark.submit.deployMode client
spark.task.cpus 1

【问题讨论】:

  • 您确定需要 1G MaxPermSize 吗?也可能值得使用 Java8(因此在 OpenJDK/OracleJDK 的情况下该选项被忽略)。

标签: scala apache-spark garbage-collection apache-spark-sql g1gc


【解决方案1】:

添加以下标志消除了 GC 暂停。

spark.executor.extraJavaOptions -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=35 -XX:ConcGCThreads=12

我认为它确实需要进行相当多的调整。 Thisdatabricks 的帖子非常有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多