Teraz mam 4-fazowy MapReduce pracę następująco:Chaining Wielu Redukcje w pracy Hadoop MapReduce
Input-> Map1 -> Reduce1 -> Reducer2 -> Reduce3 -> Reduce4 -> Output
Zauważyłem, że istnieje ChainMapper
klasa w Hadoop, które mogą łańcuchowe kilka mappers w jeden wielki odwzorowującym, i zaoszczędzić dysk I/O koszt między fazami mapy. Istnieje również klasa ChainReducer
, jednak nie jest to prawdziwa "Chain-Reducer". Może obsługiwać tylko zadania, takie jak:
[Map+/ Reduce Map*]
wiem, że mogę ustawić cztery miejsca pracy MR dla mojego zadania, a użycie domyślnych mappers dla trzech ostatnich miejsc pracy. Ale to będzie kosztowało dużo dyskowych operacji wejścia/wyjścia, ponieważ reduktorzy powinni zapisać wynik na dysku, aby umożliwić dostęp do niego następującemu narzędziu odwzorowujacemu. Czy istnieje jakakolwiek inna wbudowana funkcja Hadoop do łączenia moich reduktorów w celu obniżenia kosztów wejścia/wyjścia?
Używam Hadoop 1.0.4.
Ja też byłbym bardzo zainteresowany tym, jeśli to możliwe. –