【问题标题】:Spark Application - High "Executor Computing Time"Spark 应用程序 - 高“执行器计算时间”
【发布时间】:2018-03-25 13:01:04
【问题描述】:

我有一个运行了 46 小时的 Spark 应用程序。虽然其大部分工作在 25 秒内完成,但特定工作需要数小时。下面提供了一些详细信息:

Task Time   Shuffle Read        Shuffle Write
7.5 h       2.2 MB / 257402     2.9 MB / 128601

还有其他类似的偏离路线的任务时间,其值为 11.3 小时、10.6 小时、9.4 小时等。它们中的每一个都将大部分活动时间花在“rdd at DataFrameFunctions.scala:42.”上。该阶段的详细信息显示执行者在“执行者计算时间”上花费的时间。该执行器运行在 DataNode 1 上,CPU 使用率非常正常,约为 13%。其他盒子(另外 4 个工作节点)的 CPU 利用率非常低。

如前所述,当随机读取在 5000 条记录以内时,速度非常快,只需 25 秒即可完成。日志(spark/hadoop/hbase)没有附加任何内容,在/tmp/var/tmp 位置也没有发现任何内容,这将表明一些与磁盘相关的活动正在进行中。

我对出了什么问题一无所知。已经为此苦苦挣扎了一段时间。使用的软件版本如下:

Hadoop    : 2.7.2
Zookeeper : 3.4.9
Kafka     : 2.11-0.10.1.1
Spark     : 2.1.0
HBase     : 1.2.6
Phoenix   : 4.10.0

spark默认文件上的一些配置。

spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://SDCHDPMAST1:8111/data1/spark-event
spark.history.fs.logDirectory    hdfs://SDCHDPMAST1:8111/data1/spark-event
spark.yarn.jars                  hdfs://SDCHDPMAST1:8111/user/appuser/spark/share/lib/*.jar
spark.driver.maxResultSize       5G
spark.deploy.zookeeper.url       SDCZKPSRV01

spark.executor.memory                   12G
spark.driver.memory                     10G
spark.executor.heartbeatInterval        60s
spark.network.timeout                   300s

有什么办法可以减少花在“Executor Computing time”上的时间吗?

【问题讨论】:

  • 我在其中一个集群上面临同样的行为,你有没有发现减少执行程序计算时间的想法?您的作业是批处理的还是流式的?

标签: scala apache-spark


【解决方案1】:

在特定数据集上执行的作业存在偏差。由于这种偏斜,就业人数超出预期。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 2019-09-22
    相关资源
    最近更新 更多