首页 > 解决方案 > spark stage time 代表什么,executor task gc time 代表什么?

问题描述

我在这里有三个问题。

  1. 第一个是我的火花工作只包含一个阶段,工作时间/阶段时间如下图所示。根据我的见解,工作时间是墙时间,而这里的舞台时间几乎是工作时间的一半,它代表什么。

Spark 作业时间 Spark 阶段时间SparkJobTime SparkStage时间

  1. 秒的问题是GC Time与Task Time相比太大了,gc time代表什么。我的意思是是否包括次要/完整 gc,是否包括 stop-the-world? 火花执行器

备注
这项工作的作用:读取 hbase -> 执行小进程 -> 在 hdfs 上保存为 parquet
数据大小:~ 40T
执行程序数量:180
执行程序堆内存:16G
执行程序开销内存:4G
执行程序 jvm:oracle 64 位
执行程序 jvm 参数:-Xms16g -Xmx16g -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:+UseCompressedOops

  1. executor的gc太不正常了,我正在调查,下面的信息是我发现的。我想知道如何优化 JVM args,似乎完整的 gc 需要很长时间(大于 20 秒)。

    Heap Mem Usage 堆内存使用 G1 Eden Space G1EdenSpace G1 Survivor Space G1幸存者空间 G1 Old Space G1旧空间 GC 统计数据
    G1 Young Generation 6 分钟(1,034 个收集)
    G1 Old Generation 22 分钟(46 个收集)

让我们看看堆是什么样子(我转储了一个堆)
抱歉这里没有图片,我昨天用 Eclipse Memory Analysis 分析它时没有保存它,但我们可以确定它们是三个大的 Hash Map Object,几乎消耗10G内存(这三个是静态var,不能free-ed,这不是bug!真的需要这三个大hash map。)

谢谢。

标签: javaperformanceapache-sparkjvmjvm-arguments

解决方案


推荐阅读