活动任务在 Spark 中为负数 UI

Active tasks is a negative number in Spark UI

使用 and 时,我看到了这个:

你看到活动任务是一个负数(总任务数与已完成任务数的差值)。

此错误的来源是什么?


我有很多个执行者的节点。但是,似乎有一个任务似乎一直处于空闲状态(我没有看到任何进展),而另一个相同的任务正常完成。


这也是相关的:mail我可以确认正在创建许多任务,因为我使用的是 1k 或 2k 执行程序。

我得到的错误有点不同:

16/08/15 20:03:38 ERROR LiveListenerBus: Dropping SparkListenerEvent because no remaining room in event queue. This likely means one of the SparkListeners is too slow and cannot keep up with the rate at which tasks are being started by the scheduler.
16/08/15 20:07:18 WARN TaskSetManager: Lost task 20652.0 in stage 4.0 (TID 116652, myfoo.com): FetchFailed(BlockManagerId(61, mybar.com, 7337), shuffleId=0, mapId=328, reduceId=20652, message=
org.apache.spark.shuffle.FetchFailedException: java.util.concurrent.TimeoutException: Timeout waiting for task.

这是一个 Spark 问题。它发生在执行程序失败后重新启动时。相同的 JIRA 问题已经创建。您可以从 https://issues.apache.org/jira/browse/SPARK-10141 link.

获得更多详细信息

的 Spark-dev 邮件列表中得到了答复,有几个与此问题相关的 JIRA 工单,例如:

  1. ResourceManager UI showing negative value
  2. NodeManager reports negative running containers

此行为通常发生在(许多)执行程序在失败后重新启动时。


当应用程序使用太多执行程序时,也会发生此行为。使用 coalesce() 来解决这个问题。

确切地说,在 中,我有超过 400k 个分区。我使用 data.coalesce(1024),如 Repartition an RDD 中所述,我能够绕过 Spark UI 错误。你看,对于分布式计算和 Spark,分区是一个非常重要的概念。

在我的问题中我也使用了1-2k个executors,所以肯定是有关系的。

注意:分区太少,您可能会遇到这种情况 Spark Java Error: Size exceeds Integer.MAX_VALUE