Hadoop Partitioner: Dowiedz się więcej o wstępie, składni, implementacji

Opublikowany: 2020-05-14

Podstawowym celem tego samouczka dotyczącego programu Hadoop Partitioner jest przedstawienie punkt po punkcie definicji każdej części używanej w Hadoop. W tym poście omówimy znaczenie partycjonowania Hadoop, potrzebę partycjonowania w Hadoop oraz słaby przypadek partycjonowania Hadoop.

Pozwól nam zrozumieć, czym jest Hadoop Partitioner.

Spis treści

Co to jest partycjonowanie w Hadoop?

Partitioner pozwala na rozpowszechnianie, w jaki sposób dane wyjściowe przechodzą z etapu mapy do reduktorów.

Partitioner kontroluje kluczowy segment środkowych wyjść mapy. Klucz lub podzbiór klucza jest używany do wywnioskowania partycji za pomocą funkcji skrótu.

W rzeczywistości struktura Hadoop jest partycjonatorem opartym na hashowaniu. Ta funkcja skrótu w Hadoop pomaga uzyskać partycję.

Partycja działa na wyjściu mapowania w zależności od wartości klucza. Ta sama wartość klucza trafia do tej samej partycji w każdym programie mapującym. Po tym procesie ostateczna partycja jest wysyłana do reduktora.

Klasa partycji decyduje, dokąd trafi para klucza i wartości. Faza partycjonowania przypada na środek mapy i zmniejsza fazy.

Zobaczmy, dlaczego istnieje potrzeba partycjonowania Hadoop.

Jaka jest potrzeba partycjonowania Hadoop?

Pobierany jest zestaw danych wejściowych, a w fazie zadania architektury MapReduce tworzona jest lista par kluczy i wartości. Te pary kluczy i wartości są tworzone w fazie mapy. Stało się tak, gdy dane wejściowe są dzielone, które są następnie przetwarzane przez każde zadanie i mapę, tworząc listę par kluczy i wartości.

Jednak podział map out odbywa się tuż przed fazą redukcji, w oparciu o klucz i wartość. W ten sposób wszystkie klucze o tych samych wartościach są zgrupowane razem i trafiają do tego samego reduktora. Dzięki temu zapewniony jest równomierny rozkład wyjścia z mapy na reduktor.

Partycjonowanie Hadoop MapReduce umożliwia równomierne rozłożenie danych wyjściowych programu mapującego w reduktorze, zapewniając, że właściwy klucz trafia do odpowiedniego reduktora.

Przeczytaj : Wynagrodzenie programisty Hadoop w Indiach

Składnia programu Hash Partitioner w Hadoop

Oto domyślna składnia partycji mieszania w Hadoop.

public int getPartition (klucz K, wartość V

int numReduceTasks)

{

return(key.hashCode() & Integer.MAX_VALUE) % numRedudeTasks;

}

Implementacja partycji Hadoop

Aby zobaczyć przykład wykorzystania Hadoop Partitioner w praktycznych zastosowaniach, spójrzmy na poniższą tabelę zawierającą dane dla mieszkańców bloku w budynku.

Numer mieszkania Imię Płeć Członkowie rodziny Rachunek za energię elektryczną
1101 Manisza Płeć żeńska 3 1500
1102 Deepak Męski 4 2000
1103 Sanjay Męski 3 1100
1104 Nidhi Płeć żeńska 2 900
1105 Prateek Męski 1 650
1106 Gopal Męski 4 1800
1107 Samikszaj Płeć żeńska 2 1300

Teraz napiszmy program, który znajdzie najwyższy rachunek za prąd według płci w różnych grupach członków rodziny – od 2 do 3 i poniżej 4.

Podane dane są zapisywane jako input.txt w katalogu „/home/Hadoop/HadoopPartitioner”.

Klawisz jest zgodny ze wzorem – klawisz specjalny + nazwa pliku + numer linii. Na przykład,

klawisz = wejście@1

W tym przypadku wartość byłaby

wartość = 1101 \t Manisha \t Kobieta \t 3 \t 1500

Oto jak przebiegłaby operacja:

  • Odczytaj wartość
  • Użyj funkcji podziału, aby oddzielić płcie i przechowywać je w zmiennej ciągu

String[] str = wartość.toString().split(„\t”, -2);

Rodzaj ciągu = str[2];

  • Teraz wyślij informacje o płci i zapisz wartość danych jako parę ley i value do zadania podziału

context.write(nowy tekst(płeć), nowy tekst(wartość));

  • Powtórz dla wszystkich rekordów

Jako dane wyjściowe otrzymasz posortowane dane dotyczące płci i wartości danych jako pary klucza i wartości.

Oto jak przebiegałoby zadanie partycjonowania.

Po pierwsze, partycjoner pobierze pary klucz i wartość wysłane do niego jako dane wejściowe. Teraz podzieli dane na różne segmenty.

Wejście

klucz = wartość pola płci

wartość = rekordowa wartość tej płci

Oto jak będzie przebiegał proces.

  • Odczytaj wartość członka rodziny z pary klucz-wartość

String[] str = wartość.toString().split(„\t”);

int wiek = Integer.parseInt(str[3]);

  • Sprawdź wartość członków rodziny z następującymi warunkami
  • Członkowie rodziny od 2 do 3 lat
  • Członkowie rodziny poniżej 4

jeśli (członkowie rodziny<4)

{

zwróć 0;

}

else if(familymembers>=2 && familymembers<=3)

{

return 1 % numReduceTasks;

}

w przeciwnym razie

{

return 2 % numReduceTasks;

}

Wyjście

Dane par klucz i wartość zostaną podzielone na trzy podane kolekcje.

Dowiedz się również: Najlepsze narzędzia Hadoop, o których powinieneś wiedzieć

Słabe partycjonowanie i przezwyciężanie go

Załóżmy, że możesz przewidzieć, że jeden z kluczy w danych wejściowych będzie wyświetlany częściej niż jakikolwiek inny. Tak więc, być może będziesz musiał wysłać cały swój klucz (ogromną liczbę) do jednej partycji, a następnie rozprowadzić pozostałe klucze na wszystkie inne partycje za pomocą ich hashCode().

Masz teraz dwa mechanizmy wysyłania informacji do partycji:

  1. Najpierw klucz pokazujący więcej zostanie wysłany do jednej partycji
  2. Po drugie, wszystkie pozostałe klucze zostaną wysłane do partycji zgodnie z ich hashCode().

Załóżmy teraz, że twoja technika hashCode() nie zapewnia odpowiedniego rozmieszczenia pozostałych kluczy na partycjach. Tak więc informacje nie są równomiernie rozpowszechniane w partycjach i reduktorach. Dzieje się tak, ponieważ każda partycja jest proporcjonalna do reduktora.

Tak więc niektóre reduktory będą miały większe ilości danych niż inne reduktory. W związku z tym pozostałe reduktory będą musiały poczekać na jeden reduktor (jeden z kluczami zdefiniowanymi przez użytkownika) ze względu na dostępne obciążenie.

W takim przypadku powinieneś postępować zgodnie z metodologią, która będzie udostępniać dane między różnymi reduktorami. Dowiedz się więcej o Hadoop dzięki naszemu ostatecznemu samouczkowi Hadoop.

Wniosek

Mamy nadzieję, że ten przewodnik dotyczący partycji Hadoop był dla Ciebie pomocny. Aby uzyskać więcej informacji na ten temat, skontaktuj się z ekspertami z upGrad, a my pomożemy Ci przepłynąć.

Jeśli chcesz dowiedzieć się więcej o Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zawiera ponad 7 studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne praktyczne warsztaty, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.

Ucz się kursów rozwoju oprogramowania online z najlepszych światowych uniwersytetów. Zdobywaj programy Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.

Opanuj technologię przyszłości — Big Data

Zaawansowany program certyfikacji w Big Data z IIIT Bangalore