【发布时间】: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