MapReduce - API
W tym rozdziale przyjrzymy się bliżej klasom i ich metodom, które są zaangażowane w operacje programowania MapReduce. Będziemy przede wszystkim skupiać się na następujących kwestiach -
- Interfejs JobContext
- Klasa zawodu
- Mapper Class
- Klasa reduktora
Interfejs JobContext
Interfejs JobContext jest super interfejsem dla wszystkich klas, który definiuje różne zadania w MapReduce. Zapewnia widok tylko do odczytu zadania dostarczonego do zadań podczas ich działania.
Poniżej przedstawiono interfejsy podrzędne interfejsu JobContext.
S.No. | Opis podinterfejsu |
---|---|
1. | MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Definiuje kontekst, który jest nadawany Mapperowi. |
2. | ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT> Definiuje kontekst, który jest przekazywany do Reducer. |
Klasa zadania to główna klasa implementująca interfejs JobContext.
Klasa zawodu
Klasa Job jest najważniejszą klasą interfejsu API MapReduce. Pozwala użytkownikowi na skonfigurowanie zadania, przesłanie go, kontrolę jego wykonania i sprawdzenie stanu. Metody set działają tylko do momentu przesłania zadania, po czym rzucą wyjątek IllegalStateException.
Zwykle użytkownik tworzy aplikację, opisuje różne aspekty zadania, a następnie przesyła zadanie i monitoruje jego postęp.
Oto przykład, jak przesłać ofertę pracy -
// Create a new Job
Job job = new Job(new Configuration());
job.setJarByClass(MyJob.class);
// Specify various job-specific parameters
job.setJobName("myjob");
job.setInputPath(new Path("in"));
job.setOutputPath(new Path("out"));
job.setMapperClass(MyJob.MyMapper.class);
job.setReducerClass(MyJob.MyReducer.class);
// Submit the job, then poll for progress until the job is complete
job.waitForCompletion(true);
Konstruktorzy
Poniżej znajduje się podsumowanie konstruktora klasy Job.
S.No | Podsumowanie konstruktora |
---|---|
1 | Job() |
2 | Job(Konfiguracja) |
3 | Job(Konfiguracja konfiguracji, String nazwa_zadania) |
Metody
Oto niektóre z ważnych metod klasy Job:
S.No | Opis metody |
---|---|
1 | getJobName() Nazwa zadania określona przez użytkownika. |
2 | getJobState() Zwraca bieżący stan zadania. |
3 | isComplete() Sprawdza, czy zadanie jest zakończone, czy nie. |
4 | setInputFormatClass() Ustawia InputFormat dla zadania. |
5 | setJobName(String name) Ustawia nazwę zadania określoną przez użytkownika. |
6 | setOutputFormatClass() Ustawia format wyjściowy zadania. |
7 | setMapperClass(Class) Ustawia Mappera dla zadania. |
8 | setReducerClass(Class) Ustawia reduktor dla zadania. |
9 | setPartitionerClass(Class) Ustawia partycjoner dla zadania. |
10 | setCombinerClass(Class) Ustawia łącznik dla zadania. |
Mapper Class
Klasa Mapper definiuje zadanie Map. Mapuje wejściowe pary klucz-wartość na zestaw pośrednich par klucz-wartość. Mapy to indywidualne zadania, które przekształcają rekordy wejściowe w rekordy pośrednie. Przekształcone rekordy pośrednie nie muszą być tego samego typu co rekordy wejściowe. Dana para wejściowa może odpowiadać zeru lub wielu parom wyjściowym.
metoda
mapjest najważniejszą metodą klasy Mapper. Składnia jest zdefiniowana poniżej -
map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)
Ta metoda jest wywoływana raz dla każdej pary klucz-wartość w podziale danych wejściowych.
Klasa reduktora
Klasa Reducer definiuje zadanie Reduce w MapReduce. Redukuje zbiór wartości pośrednich, które mają wspólny klucz, do mniejszego zbioru wartości. Implementacje reduktora mogą uzyskać dostęp do konfiguracji zadania za pośrednictwem metody JobContext.getConfiguration (). Reduktor ma trzy podstawowe fazy - Tasuj, Sortuj i Zmniejsz.
Shuffle - Reducer kopiuje posortowane dane wyjściowe z każdego programu mapującego przy użyciu protokołu HTTP w całej sieci.
Sort- Framework scala-sortuje dane wejściowe Reduktora według kluczy (ponieważ różni Mapperzy mogą wyprowadzać ten sam klucz). Fazy tasowania i sortowania występują jednocześnie, tj. Podczas pobierania danych wyjściowych są one łączone.
Reduce - W tej fazie dla każdego <klucz, (zbiór wartości)> w posortowanych danych wejściowych wywoływana jest metoda redukuj (obiekt, iterowalny, kontekst).
metoda
reducejest najważniejszą metodą klasy Reducer. Składnia jest zdefiniowana poniżej -
reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)
Ta metoda jest wywoływana raz dla każdego klucza w kolekcji par klucz-wartość.