EMR Spark java 应用程序 GC 问题

EMR Spark java Application GC Problems

我正在开发一个 spark 应用程序,但我遇到了一个严重的问题 结果非常高的 CGTime 任务时间。 我把日志导出来用GC easy分析了。

集群硬件: 1 Driver m4.2x大 16 个 vCore,32 GiB 内存,仅 EBS 存储 EBS Storage:32 GiB

15 个核心: m4.2x大 16 个 vCore,32 GiB 内存,仅 EBS 存储 EBS Storage:32 GiB

配置

hadoop-env.export   JAVA_HOME   /usr/lib/jvm/java-1.8.0
mapred-site mapreduce.fileoutputcommitter.algorithm.version 2
mapred-site mapred.output.committer.class   org.apache.hadoop.mapred.FileOutputCommitter
spark-defaults  spark.default.parallelism   880
spark-defaults  spark.executor.instances    44
spark-defaults  spark.yarn.executor.memoryOverhead  3072
spark-defaults  spark.executor.cores    10
spark-defaults  spark.yarn.driver.memoryOverhead    3072
spark-defaults  spark.driver.memory 18G
spark-defaults  spark.driver.cores  10
spark-defaults  spark.executor.memory   18G
spark-env.export    JAVA_HOME   /usr/lib/jvm/java-1.8.0

输入

维度 1.2 万亿数据。

伪指令

1条读取数据 2 映射到对 |行 -> 元组(行,1) 3 个不同

日志问题

  1. 连续 Full GC
  2. 长时间停顿
  3. 正在等待资源的应用程序

分析Link

http://gceasy.io/my-gc-report.jsp?p=c2hhcmVkLzIwMTgvMTAvMTIvLS1leGVjdXRvcjFzdGRvdXQudHh0LnppcC0tMTAtMzUtMjY=

我不是 CG 收集器动力学方面的专家,有人可以帮我找到问题吗?

你的 spark executor(s) 很大,大的 executor(s) 引入了沉重的 GC 开销.

观看此视频了解如何选择执行器大小和调整性能。

我推荐观看完整视频:https://www.youtube.com/watch?v=OkyRdKahMpk

或者至少从这里调整执行器:https://youtu.be/OkyRdKahMpk?t=1308