2011-11-07 16 views
5

(Nawet bardziej podstawowe niż Difference between Pig and Hive? Why have both?)Używanie Pig/Hive do przetwarzania danych zamiast bezpośredniej mapy Java zmniejsza kod?

Mam rurociągu przetwarzania danych napisany w kilka Java map-zmniejszenie zadania ponad Hadoop (mój własny kod niestandardowy, pochodzące z Mapper Hadoop i Reducer). Jest to seria podstawowych operacji, takich jak join, inverse, sort i group by. Mój kod jest zaangażowany i niezbyt ogólny.

Jakie są plusy i minusy kontynuowania tego podejścia wymagającego wprawdzie rozwojowego vs. migracja wszystkiego do Pig/Hive z kilkoma UDF? jakich zadań nie będę mógł wykonać? czy będę miał pogorszenie wydajności (pracując z setkami TB)? czy utracę możliwość modyfikowania i debugowania kodu podczas utrzymywania? czy będę w stanie przetworzyć część zadań jako Java map-zmniejszyć i użyć ich input-output z moimi zadaniami Pig/Hive?

Odpowiedz

8

Numer referencyjny Twitter: Zazwyczaj skrypt świni to 5% kodu natywnej mapy/skrótu zapisanego w około 5% przypadków. Jednak zwykle w przypadku zapytań zwykle zajmuje od 110 do 150% czasu wykonania, który zajęłaby natywna mapa/zadanie redukcji. Ale oczywiście, jeśli istnieje procedura, która jest wysoce wrażliwa na wydajność, nadal ma możliwość ręcznego zakodowania natywnej funkcji mapowania/zmniejszania bezpośrednio.

Powyższe odniesienie mówi również o zaletach i wadach Pig'a nad tworzeniem aplikacji w MapReduce.

Podobnie jak w przypadku każdego wyższego poziomu języka lub abstrakcji, elastyczność i wydajność są tracone dzięki Pig/Hive, kosztem wydajności programistów.

+8

(Pracuję na świni na Twitterze): liczba 110-150% jest nieco arbitralna. Często Pig będzie znacznie szybszy niż twój kod, ponieważ ma wiele optymalizacji. Zasadniczo przekłada on rzeczy na MR, więc nie może być szybszy niż MR. Ale prosty kod od początkującego do pośredniego często przegrywa z Pigem. – SquareCog

+0

Thnx za wgląd. –

3

W tym paper od 2009 r. Stwierdzono, że Pig działa 1,5 razy wolniej niż zwykła MapReduce. Oczekuje się, że narzędzia wyższego poziomu zbudowane na wierzchu Hadoop będą działały wolniej niż zwykła MapReduce, jednak prawdą jest, że aby MapReduce działało optymalnie, potrzebny jest zaawansowany użytkownik, który zapisuje wiele kodu standardowego (np. Komparatory binarne).

Uważam, że warto wspomnieć o nowym API o nazwie Pangool (którego jestem deweloperem), który ma zastąpić zwykły interfejs API Hadoop MapReduce, ułatwiając kodowanie i zrozumienie wielu elementów (sortowanie wtórne, redukcja). połączenia boczne). Pangool nie nakłada na siebie wydajności (zaledwie 5% w porównaniu z first benchmark) i zachowuje pełną elastyczność oryginalnego API MapRed.