Активные задачи - это отрицательное число в пользовательском интерфейсе Spark

При использовании и , я увидел это:

введите описание изображения здесь

где вы видите, что активные задачи - это отрицательное число (разность общих задач из завершенных задач).

Каков источник этой ошибки?


Node, что у меня много исполнителей. Тем не менее, похоже, что есть задача, которая, кажется, была бездействующей (я не вижу никакого прогресса), а другая идентичная задача выполнена нормально.


Также это связано: 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.

Ответ 1

Это проблема искры. Это происходит, когда исполнители перезапускают после сбоев. Проблема JIRA для того же самого уже создана. Вы можете получить более подробную информацию об этом от https://issues.apache.org/jira/browse/SPARK-10141.

Ответ 2

Отвечено в списке рассылки Spark-dev из S. Owen, есть несколько билетов JIRA, имеющих отношение к этой проблеме, например:

Такое поведение обычно возникает, когда (многие) исполнители перезапускают после сбоев.


Такое поведение также может возникать, когда приложение использует слишком много исполнителей. Используйте coalesce(), чтобы исправить этот случай.

Чтобы быть точным, в Подготовьте мои bigdata с помощью Spark через Python, у меня было > 400 тыс. разделов. Я использовал data.coalesce(1024), как описано в Repartition RDD, и я смог обойти ошибку Spark UI. Понимаете, разделение - очень важная концепция, когда речь идет о распределенных вычислениях и Spark.

В моем вопросе я также использую 1-2k исполнителей, поэтому он должен быть связан.

Примечание. Слишком мало разделов, и вы можете столкнуться с этой ошибкой Spark Java: размер превышает Integer.MAX_VALUE.