2013-06-01 19 views
7

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.

+0

Ja też byłbym bardzo zainteresowany tym, jeśli to możliwe. –

Odpowiedz

2

Nie sądzę, aby można było przekazać o/p reduktora do innego reduktora bezpośrednio. ja bym poszedł do tego:

Input-> Map1 -> Reduce1 -> 
     Identity mapper -> Reducer2 -> 
       Identity mapper -> Reduce3 -> 
         Identity mapper -> Reduce4 -> Output 

W Hadoop serii 2.x wewnętrznie możesz mappers łańcuchowe przed reduktorem z ChainMapper i odwzorowujące łańcuchowych po reduktora z ChainReducer.

+0

Co masz na myśli przez o/p? – Adelin

+1

@Adio oznacza wynik. –

Powiązane problemy