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.
  1. W jednym teście 10 linii Pig Latin ≈ 200 linii Java
  2. Pisanie w Javie zajmuje 4 godziny, a Pig Pig Latin zajmuje około 15 minut
  3. 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
  • Język przepływu danych.
  • Język wysokiego poziomu.
  • Wykonywanie operacji łączenia u świni jest proste
  • Język przetwarzania danych.
  • Język niskiego poziomu
  • Dość trudne jest wykonanie operacji łączenia.
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.
KompilacjaNie 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ść koduDziała z dowolną wersją HadoopBrak 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 -

  1. Pig vs Spark - 10 przydatnych różnic do nauki
  2. Apache Pig vs Hoje Apache - Top 12 przydatnych różnic
  3. 15 najlepszych rzeczy, które musisz wiedzieć o MapReduce vs. Spark
  4. Jak działa MapReduce?
  5. Rozproszona pamięć podręczna w Hadoop

Kategoria: