Korzystając z Hadoop, czy moje reduktory gwarantują uzyskanie wszystkich rekordów z tym samym kluczem?

Uruchamiam zadanie Hadoop przy użyciu Hive, które ma być uniq linijkami w wielu plikach tekstowych. W kroku redukcja wybiera najnowszy rekord oznaczony czasem dla każdego klucza.

Czy Hadoop gwarantuje, że każdy rekord z tym samym kluczem, wyjście przez etap mapy, trafi do jednego reduktora, nawet jeśli wiele reduktorów działa w klastrze?

Obawiam się, że wyjście mappera może być podzielone po shuffle dzieje się w środku zestawu rekordów z ten sam klucz.

Author: Gyan Veda, 2010-04-14

3 answers

Wszystkie wartości klucza są wysyłane do tego samego reduktora. Zobacz to Yahoo! tutorial do dalszej dyskusji.

To zachowanie jest określane przez partycjoner i może nie być prawdziwe, jeśli używasz partycjonera innego niż domyślny.

 14
Author: Karl Anderson,
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
2010-04-13 22:53:11

Właściwie to nie! Można utworzyć Partitioner, który wysyła ten sam klucz do innego reduktora za każdym razem, gdy wywołane jest getPartition. To nie jest ogólnie dobry pomysł dla większości aplikacji.

 5
Author: Bkkbrad,
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
2010-04-14 22:53:42

Tak, Hadoop gwarantuje, że wszystkie klucze, które są takie same, trafią do tego samego reduktora. Osiąga się to za pomocą funkcji partycji, która bucketuje klucze za pomocą funkcji hash.

Aby uzyskać więcej informacji na temat procesu partycjonowania, spójrz na to: Dane partycjonowania

Mówi w szczególności o tym, jak różni maperzy przetwarzający ten sam klucz zapewniają, że wszystkie klucze o danej wartości trafiają do tej samej partycji, a tym samym są przetwarzane przez tę samą reduktor.

 3
Author: Binary Nerd,
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
2010-04-13 23:01:31