Różnice między PIG a MapReduce
Pig to język skryptowy wykorzystywany do eksploracji dużych zbiorów danych. Pig Latin to rozszerzenie Hadoop, które upraszcza programowanie Hadoop, zapewniając język przetwarzania danych wysokiego poziomu. Ponieważ Pig pisze w skryptach, możemy osiągnąć tę funkcjonalność, pisząc bardzo niewiele wierszy kodu. MapReduce to rozwiązanie do skalowania przetwarzania danych. MapReduce nie jest programem, jest ramą do pisania rozproszonych programów do przetwarzania danych. Programy napisane przy użyciu frameworku MapReduce pomyślnie skalowały się na tysiącach komputerów.
Wprowadzenie do PIG
Świnia to przepływ danych i język wysokiego poziomu. Pig działa z dowolną wersją Hadoop.
Składniki świni
- Pig Latin - język używany do wyrażania przepływów danych
- Pig Engine - silnik na szczycie Hadoop
Zalety PIG
- Eliminuje potrzebę dostrajania Hadoop przez użytkowników
- Izoluje użytkowników od zmian w interfejsach Hadoop.
- Wzrost wydajności.
- W jednym teście 10 linii Pig Latin ≈ 200 linii Java
- Pisanie w Javie zajmuje 4 godziny, a Pig Pig Latin zajmuje około 15 minut
- System otwarty dla programistów innych niż Java
Jeśli wiemy o HIVE i PIG, nie musimy przejmować się kodem, jeśli wersja Hadoop zostanie uaktualniona do wyższej wersji.
Na przykład: jeśli wersja Hadoop ma teraz wersję 2.6, zostanie zaktualizowana do wersji 2.7. PIG obsługuje w dowolnych wersjach, nie musisz się martwić, czy kod działa w wyższych wersjach.
Funkcje PIG
Pig Latin to język przepływu danych
- Zapewnia obsługę typów danych - długie, zmiennoprzecinkowe, tablica znaków, schematy i funkcje
- Jest rozszerzalny i obsługuje funkcje zdefiniowane przez użytkownika
- Metadane nie są wymagane, ale są używane, jeśli są dostępne
- Działa na plikach w HDFS
- Zapewnia typowe operacje, takie jak JOIN, GROUP, FILTER, SORT
Scenariusz użycia PIG
- Przetwarzanie blogów
- Przetwarzanie danych dla platform wyszukiwania w Internecie
- Zapytania ad hoc w dużych zestawach danych
- Szybkie prototypowanie algorytmów do przetwarzania dużych zbiorów danych
Kto używa świni
- Yahoo, jeden z najcięższych użytkowników Hadoop, wykonuje 40% wszystkich zadań Hadoop u świni.
- Twitter jest także innym znanym użytkownikiem Pig
Wprowadzenie do MapReduce
- W przeszłości problemem było przetwarzanie coraz większych zestawów danych. Wszystkie dane i obliczenia musiały zmieścić się na jednym komputerze. Aby pracować na większej ilości danych, trzeba było kupić większą, droższą maszynę.
- Więc jakie jest rozwiązanie przetwarzania dużej ilości danych, gdy nie jest to technicznie lub finansowo wykonalne na jednym komputerze?
- MapReduce to rozwiązanie do skalowania przetwarzania danych.
MapReduce ma 3 etapy / fazy
Poniższe kroki są wykonywane po kolei.
- Faza mapowania
Dane wejściowe z systemu plików HDFS.
- Potasuj i sortuj
Dane wejściowe do losowego sortowania i sortowania są wynikiem działania programu mapującego
- Reduktor
Dane wejściowe do reduktora są przesyłane w kolejności losowej i sortowania.
MapReduce zrozumie dane w kategoriach tylko kombinacji Klucz-wartość.
- Głównym celem fazy mapy jest odczyt wszystkich danych wejściowych oraz ich transformacja lub filtracja. Przekształcone lub przefiltrowane dane są dalej analizowane przez logikę biznesową w fazie redukcji, chociaż faza redukcji nie jest ściśle wymagana.
- Głównym celem fazy redukcji jest zastosowanie logiki biznesowej, aby odpowiedzieć na pytanie i rozwiązać problem.
Bezpośrednie porównanie między PIG a MapReduce (infografiki)
Poniżej znajduje się 4 najlepsze porównanie między PIG a MapReduce
Kluczowe różnice między PIG a MapReduce
Poniżej znajdują się najważniejsze różnice między PIG a MapReduce
PIG lub MapReduce Faster
Wszelkie zadania PIG są przepisywane w MapReduce.so, Map Reduce jest tylko szybsze.
Rzeczy, których nie może być w PIG
Gdy coś jest trudnego do wyrażenia w Pig, skończysz na wydajności, tj. Zbudowaniu czegoś z kilku prymitywów
Kilka przykładów:
- Złożone grupy lub łączenia
- Łączenie wielu zestawów danych
- Złożone użycie rozproszonej pamięci podręcznej (replikowane sprzężenie)
- Złożone produkty krzyżowe
- Robiąc szalone rzeczy w zagnieżdżonym FOREACH
W takich przypadkach Pig zamierza spowolnić kilka zadań MapReduce, co można było wykonać przy mniejszym nakładzie pracy.
Wykorzystanie scenariuszy MapReduce
- Gdy jest coś trudnego do osiągnięcia, użyj MapReduce.
Rozwój jest znacznie szybszy w PIG?
- Mniej wierszy kodu, czyli mniejszy kod, oszczędza czas programisty.
- Mniej błędów na poziomie java do wypracowania, ale trudniej je znaleźć.
Oprócz powyższych różnic obsługuje PIG
- Umożliwia programistom przechowywanie danych w dowolnym miejscu potoku.
- Deklaruje plany wykonania.
- Zapewnia operatorom wykonywanie funkcji ETL (wyodrębnianie, przekształcanie i ładowanie).
Bezpośrednie porównanie między PIG a MapReduce
Poniżej znajdują się listy punktów, opisz porównania między PIG a MapReduce
Podstawa do porównania |
ŚWINIA |
MapReduce |
Operacje |
|
|
Linie kodu i gadatliwość | Podejście oparte na wielu zapytaniach, co zmniejsza długość kodów. | wymagają prawie 10-krotnie większej liczby wierszy do wykonania tego samego zadania. |
Kompilacja | Nie ma potrzeby kompilacji. Podczas wykonywania każdy operator świni Apache jest konwertowany wewnętrznie na zadanie MapReduce. | Zadania MapReduce mają długi proces kompilacji. |
Przenośność kodu | Działa z dowolną wersją Hadoop | Brak gwarancji, która obsługuje każdą wersję Hadoop |
Wniosek - PIG vs MapReduce
Przykład: musimy policzyć powtarzalność słów obecnych w zdaniu.
Jaki jest lepszy sposób na wykonanie programu?
PIG lub MapReduce
Pisanie programu w świni
input_lines = LOAD '/tmp/word.txt' AS (linia: chararray);
words = FOREACH input_lines GENERATE FLATTEN (TOKENIZE (linia)) JAKO słowo;
filter_words = Filtruj słowa według słowa MATCHES '\\ w +';
word_groups = GROUP słowa_filtrowane według słowa;
word_count = FOREACH word_groups GENERATE COUNT (filter_words) AS count, group AS word;
order_word_count = ZAMÓW_liczenie według liczby DESC;
ZAPISZ uporządkowany_slowo_licznik INTO '/tmp/results.txt';
Pisanie programu w MapReduce.
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.Job;
WordCount klasy publicznej (
public static void main (String () args) zgłasza wyjątek (
if (args.length! = 2) (
System.out.printf (
„Użycie: WordCount \ n”);
System.exit (-1);
)
@SuppressWarnings („wycofanie”)
Job job = new Job ();
job.setJarByClass (WordCount.class);
job.setJobName („Liczba słów”);
FileInputFormat.setInputPaths (zadanie, nowa ścieżka (args (0)));
FileOutputFormat.setOutputPath (zadanie, nowa ścieżka (args (1)));
job.setMapperClass (WordMapper.class);
job.setReducerClass (SumReducer.class);
job.setOutputKeyClass (Text.class);
job.setOutputValueClass (IntWritable.class);
boolean Success = job.waitForCompletion (true);
System.exit (sukces? 0: 1);
)
)
Jeśli funkcjonalność może być osiągnięta przez PIG, co to jest użycie funkcji zapisu w MapReduce (Długie kody).
Zawsze używaj odpowiedniego narzędzia do pracy, szybciej i lepiej zdobądź pracę.
Polecany artykuł
To był przydatny przewodnik po PIG vs MapReduce. Omówiliśmy ich znaczenie, porównania między głowami, kluczowe różnice i wnioski. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -
- Pig vs Spark - 10 przydatnych różnic do nauki
- Apache Pig vs Hoje Apache - Top 12 przydatnych różnic
- 15 najlepszych rzeczy, które musisz wiedzieć o MapReduce vs. Spark
- Jak działa MapReduce?
- Rozproszona pamięć podręczna w Hadoop