Hadoop wykonywanie zadań spekulacyjnych

W artykule MapReduce Google mają zadanie backupu, myślę, że to samo jest z zadaniem spekulacyjnym w Hadoop. W jaki sposób realizowane jest zadanie spekulacyjne? Kiedy uruchamiam zadanie spekulacyjne, czy zadanie zaczyna się od samego początku jako starsze i powoli, czy po prostu zaczyna się od miejsca, w którym starsze zadanie osiągnęło (jeśli tak, to czy musi kopiować wszystkie pośrednie stany i dane?)

Author: lil, 2013-03-01

1 answers

Jeden problem z systemem Hadoop polega na tym, że dzieląc zadania na wiele węzłów, możliwe jest, aby kilka wolnych węzłów oceniało resztę programu.

Zadania mogą być powolne z różnych powodów, takich jak degradacja sprzętu lub błędna konfiguracja oprogramowania, ale przyczyny mogą być trudne do wykrycia, ponieważ zadania nadal kończą się pomyślnie, choć po dłuższym czasie niż oczekiwano. Hadoop nie próbuje diagnozować i naprawiać wolno działających zadań; zamiast tego próbuje wykryć, kiedy zadanie działa wolniej niż oczekiwano i uruchamia inne, równoważne zadanie jako kopię zapasową. Jest to określane jako spekulatywne wykonywanie zadań.

Na przykład, jeśli jeden węzeł ma wolny kontroler dysku, to może odczytywać jego dane wejściowe z prędkością tylko 10% prędkości wszystkich innych węzłów. Kiedy 99 zadań map jest już ukończonych, system nadal czeka na sprawdzenie ostatecznego zadania mapy, co trwa znacznie dłużej niż wszystkie inne węzły.

Zmuszając zadania do działania w izolacji od jednego kolejne, indywidualne zadania nie wiedzą skąd pochodzą ich wkłady. Zadania zaufaj platformie Hadoop, która po prostu dostarczy odpowiednie dane wejściowe. Dlatego te same dane wejściowe mogą być przetwarzane wielokrotnie równolegle, aby wykorzystać różnice w możliwościach maszyny. Ponieważ większość zadań w zadaniu zbliża się do końca, Platforma Hadoop zaplanuje nadmiarowe kopie pozostałych zadań w kilku węzłach, które nie mają innej pracy do wykonania. Proces ten znany jest jako egzekucja spekulacyjna. Po zakończeniu zadań, ogłasza ten fakt do JobTracker. Każda kopia zadania ukończona jako pierwsza staje się kopią ostateczną. Jeśli inne kopie wykonywały się spekulatywnie, Hadoop każe Tasktrackerom porzucić zadania i wyrzucić ich wyniki. Następnie Reduktory otrzymują dane wejściowe od tego, który maper zakończył pomyślnie, jako pierwszy.

Wykonywanie spekulacyjne jest domyślnie włączone. Możesz wyłączyć wykonywanie speculative dla maperów i reduktorów ustawiając mapred.map.tasks.speculative.execution i mapred.reduce.tasks.speculative.execution opcje JobConf na false, odpowiednio przy użyciu starego API, podczas gdy przy nowszym API można rozważyć zmianę mapreduce.map.speculative i mapreduce.reduce.speculative.

Aby odpowiedzieć na twoje pytanie, zaczyna się od nowa i nie ma nic wspólnego z tym, ile inne zadanie wykonało/wykonało.

Numer referencyjny: http://developer.yahoo.com/hadoop/tutorial/module4.html

 75
Author: Amar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-01 19:43:49