2016-08-15 41 views
16

Podczas korzystania i , widziałem to:Całość zadania jest liczbą ujemną w Spark UI

enter image description here

, gdzie można zobaczyć, że aktywne zadania są ujemny numer (różnicę The suma zadań z wykonanych zadań).

Jakie jest źródło tego błędu?


Węzeł że mam wiele wykonawców. Wydaje się jednak, że istnieje zadanie, które wydaje się być bezczynne (nie widzę postępu), podczas gdy inne identyczne zadanie ukończyło normalnie.


Również jest to związane: mail że mogę potwierdzić, że wiele zadań są tworzone, ponieważ używam 1k lub 2k wykonawców.

Błąd Dostaję jest nieco inna:

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. 

Odpowiedz

6

Jest to kwestia Spark. Występuje, gdy executory restartują się po niepowodzeniach. Problem JIRA dla tego samego jest już utworzony. Możesz uzyskać więcej informacji na ten temat z linku https://issues.apache.org/jira/browse/SPARK-10141.

+0

Hokam, wygląda na to, że nasze odpowiedzi są zgodne! Świetnie, dzięki za awans! Przyjmę twój, jako ruch fair-play. :) – gsamaras

6

Odpowiedział na liście dyskusyjnej Spark-dev z S. Owen, istnieje kilka biletów JIRA, które są istotne dla tej kwestii, takich jak:

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

Takie zachowanie zazwyczaj występuje, gdy (wiele) executorów uruchamia się ponownie po awarii.


Takie zachowanie może również wystąpić, gdy aplikacja używa zbyt wielu executorów. Użyj coalesce(), aby naprawić ten przypadek.

Dokładnie, w Prepare my bigdata with Spark via Python miałem> 400 tys. Partycji. Użyłem data.coalesce(1024), jak opisano w Rozdzielanie RDD, i byłem w stanie ominąć ten błąd Spark UI. Widzisz, partycjonowanie jest bardzo ważną koncepcją, jeśli chodzi o Distributed Computing and Spark.

W moim pytaniu używam także executorów 1-2k, więc musi być spokrewniony.

Uwaga: Za mało partycji i możesz doświadczyć tego Spark Java Error: Size exceeds Integer.MAX_VALUE.