2012-06-22 20 views
8

W interfejsie użytkownika Jobtracker widzę tę kolumnę o nazwie "Nieudane/zabite Próby zadań".Różnica między nieudanymi zadaniami a zabiciem zadań

Chciałbym poznać rozróżnienie między nimi. Domyślam się, że "niepowodzenia" oznaczają zadania, które naprawdę zawiodły ostatecznie po kilku próbach (więc nie odzyskano w ogóle?), Podczas gdy "Zabici" oznaczają zadania, które zostały zabite (z powodu przekroczenia limitu czasu i tak dalej), ale mogą zostać ponownie sprawdzone?

Odpowiedz

11

Istnieje kilka powodów Hadoop może zabić zadań własnymi decyzjami:
a) Zadanie nie raportuje postępy podczas limitu czasu (domyślnie 10 minut)
b) FairScheduler lub CapacityScheduler potrzebuje gniazdo do innego basenu (FairScheduler) lub kolejka (CapacityScheduler).
c) Wykonanie spekulacyjne powoduje, że wyniki zadania nie są potrzebne, ponieważ zostały wykonane w innym miejscu.

+0

Dzięki David. Twój drugi punkt sprawił, że zastanawiałem się, czy Capacity Scheduler obsługuje ten typ pre-emption? Myślałem, że to było wsparcie, a potem zostało porzucone? – kee

+0

Ostatnio próbowałem uzyskać tę rzeczywistą funkcjonalność z harmonogramu wydajności i nie udało się. W rezultacie przeszliśmy na Fair Scheduler. Nie jestem po prostu dlaczego nie działa - został upuszczony lub jest błędem. –

+0

Próba wykonania zadania timeout jest oznaczona jako "nieudana", a nie "zabita". Możesz odwołać się do _Hadoop: The Definitive Guide_. – zeekvfu

7

Hadoop używa "spekulacyjnego wykonania". To samo zadanie może zostać uruchomione na wielu skrzynkach. Pierwszy, który ukończy wygrywa, a pozostałe kopie zostaną zabite.

Nieudane zadania są błędami.

0

Nieudane zadanie jest próbą, która spowodowała wyjątek podczas uruchamiania, Zabite zadanie jest zduplikowanym zadaniem zabitym w procesie realizacji spekulatywnej.

+0

i jak mogę zobaczyć ten wyjątek? Nic nie widzę w syslog lub stderr w/mnt/var/log/hadoop/steps/1 (na głównym węźle) – Gavriel

0

Nieudane zadania 1. buggy map lub zmniejszyć kod (wyjątek Runtime error) 2. Nagłe wyjście JVM 3. Zadanie wiszące (może to spowodować wykonanie spekulacyjnego jeśli jest włączona)

Zabite zadania 1. Spekulacyjne wykonanie zabija długo działające zadanie. 2. Jeśli użytkownik sam zabije pracę. 3. Błąd śledzenia zadania

1

Nie zgodziłbym się z Davidem trochę, ponieważ zadania z limitem czasu nie są oznaczone jako zabite, lecz oznaczone jako nieudane.

W moim rozumieniu poniżej definicje dla zawiodły vs zabitych zadań

Zadanie można powiodło się z powodu

  1. zadanie zgłasza wyjątek środowiska wykonawczego
  2. nagłe wyjście dziecka JVM
  3. Timeout przekraczającej mapred.task.timeout

Zadanie można zabić z powodu

  1. FairScheduler lub CapacityScheduler potrzebuje gniazda dla innej puli (FairScheduler) lub kolejki (CapacityScheduler).
  2. Wykonanie spekulacyjne powoduje, że wyniki zadania nie są potrzebne, ponieważ zostały wykonane w innym miejscu.
  3. Użytkownicy mogą również zabijać lub nie podejmować prób wykonania zadania za pomocą interfejsu WWW lub wiersza polecenia
Powiązane problemy