[英]Spark Application - High "Executor Computing Time"
我有一个现在运行了 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.”上。 stage 的详细信息显示 executor 在“Executor Computing time”上花费的时间。 该执行器运行在 DataNode 1 上,CPU 利用率在 13% 左右非常正常。 其他盒子(另外 4 个工作节点)的 CPU 利用率非常低。
如前所述,当 Shuffle Read 在 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
有什么办法可以减少花在“执行器计算时间”上的时间?
在特定数据集上执行的作业是有偏差的。 由于偏斜,工作的收入超出了预期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.