Hadoop Partitioner: Dowiedz się więcej o wstępie, składni, implementacji
Opublikowany: 2020-05-14Podstawowym 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:
- Najpierw klucz pokazujący więcej zostanie wysłany do jednej partycji
- 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ę.
