Pop*_*Pop 6 scala apache-spark
我的 Spark 工作的第一阶段非常简单。
RDD[String]RDD[Map[String,Any]]RDD[Map[String,Any]].coalesce(100, true))运行它时,我观察到一种非常奇怪的行为。执行者的数量不断增长,直到达到我指定的给定限制spark.dynamicAllocation.maxExecutors(在我的应用程序中通常为 100 或 200)。然后它开始快速减少(大约 14000/33428 个任务),只剩下少数执行程序。他们是killed by the drive。当这个任务完成后。执行者的数量增加回其最大值。
下面是执行者数量最低时的屏幕截图。
这是任务摘要的屏幕截图。
我猜这些执行者是因为闲着才被杀的。但是,在这种情况下,我不明白他们为什么会变得无所事事。这个阶段还有很多任务要做……
您知道为什么会发生这种情况吗?
编辑
有关执行程序被杀死时驱动程序日志的更多详细信息:
16/09/30 12:23:33 INFO cluster.YarnClusterSchedulerBackend: Disabling executor 91.
16/09/30 12:23:33 INFO scheduler.DAGScheduler: Executor lost: 91 (epoch 0)
16/09/30 12:23:33 INFO storage.BlockManagerMasterEndpoint: Trying to remove executor 91 from BlockManagerMaster.
16/09/30 12:23:33 INFO storage.BlockManagerMasterEndpoint: Removing block manager BlockManagerId(91, server.com, 40923)
16/09/30 12:23:33 INFO storage.BlockManagerMaster: Removed 91 successfully in removeExecutor
16/09/30 12:23:33 INFO cluster.YarnClusterScheduler: Executor 91 on server.com killed by driver.
16/09/30 12:23:33 INFO spark.ExecutorAllocationManager: Existing executor 91 has been removed (new total is 94)
Run Code Online (Sandbox Code Playgroud)
执行器上的日志
16/09/30 12:26:28 INFO rdd.HadoopRDD: Input split: hdfs://...
16/09/30 12:26:32 INFO executor.Executor: Finished task 38219.0 in stage 0.0 (TID 26519). 2312 bytes result sent to driver
16/09/30 12:27:33 ERROR executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL 15: SIGTERM
16/09/30 12:27:33 INFO storage.DiskBlockManager: Shutdown hook called
16/09/30 12:27:33 INFO util.ShutdownHookManager: Shutdown hook called
Run Code Online (Sandbox Code Playgroud)
我在因空闲超时而被杀死的执行器上看到这个问题。我的计算负载要求极高,但它主要是在 UDF 中计算的,对于 Spark 来说是不可见的。我相信有一些火花参数可以调整。
尝试查看https://spark.apache.org/docs/latest/configuration.html#spark-propertiesspark.executor中的参数,看看是否有任何内容跳出。
| 归档时间: |
|
| 查看次数: |
5241 次 |
| 最近记录: |