MapReduce - API

В этой главе мы внимательно рассмотрим классы и их методы, которые участвуют в операциях программирования MapReduce. В первую очередь мы сосредоточим свое внимание на следующем -

  • Интерфейс JobContext
  • Класс работы
  • Класс картографа
  • Класс редуктора

Интерфейс JobContext

Интерфейс JobContext - это супер-интерфейс для всех классов, который определяет различные задания в MapReduce. Это дает вам доступ только для чтения к заданию, которое предоставляется задачам во время их выполнения.

Ниже приведены подчиненные интерфейсы интерфейса JobContext.

S.No. Подинтерфейс Описание
1. MapContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Определяет контекст, который передается Mapper.

2. ReduceContext<KEYIN, VALUEIN, KEYOUT, VALUEOUT>

Определяет контекст, который передается редуктору.

Класс Job - это основной класс, реализующий интерфейс JobContext.

Класс работы

Класс Job - самый важный класс в API MapReduce. Он позволяет пользователю настраивать задание, отправлять его, контролировать его выполнение и запрашивать состояние. Установленные методы работают только до тех пор, пока задание не будет отправлено, после чего они выдадут исключение IllegalStateException.

Обычно пользователь создает приложение, описывает различные аспекты задания, а затем отправляет задание и отслеживает его выполнение.

Вот пример того, как отправить работу -

// 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);

Конструкторы

Ниже приводится краткое описание конструктора класса Job.

S.No Резюме конструктора
1 Job()
2 Job(Конфигурация)
3 Job(Конфигурация, строка jobName)

Методы

Некоторые из важных методов класса Job следующие:

S.No Описание метода
1 getJobName()

Указанное пользователем имя задания.

2 getJobState()

Возвращает текущее состояние задания.

3 isComplete()

Проверяет, завершена работа или нет.

4 setInputFormatClass()

Устанавливает InputFormat для задания.

5 setJobName(String name)

Устанавливает указанное пользователем имя задания.

6 setOutputFormatClass()

Устанавливает выходной формат для работы.

7 setMapperClass(Class)

Устанавливает Mapper для работы.

8 setReducerClass(Class)

Устанавливает редуктор для работы.

9 setPartitionerClass(Class)

Устанавливает разделитель для работы.

10 setCombinerClass(Class)

Устанавливает комбайнер для работы.

Класс картографа

Класс Mapper определяет задание Map. Сопоставляет входные пары "ключ-значение" с набором промежуточных пар "ключ-значение". Карты - это отдельные задачи, которые преобразуют входные записи в промежуточные записи. Преобразованные промежуточные записи не обязательно должны быть того же типа, что и входные записи. Данная входная пара может отображаться в ноль или в несколько выходных пар.

Метод

mapэто самый известный метод класса Mapper. Синтаксис определен ниже -

map(KEYIN key, VALUEIN value, org.apache.hadoop.mapreduce.Mapper.Context context)

Этот метод вызывается один раз для каждой пары "ключ-значение" в разбиении ввода.

Класс редуктора

Класс Reducer определяет задание Reduce в MapReduce. Он сокращает набор промежуточных значений, имеющих общий ключ, до меньшего набора значений. Реализации Reducer могут получить доступ к Configuration для задания через метод JobContext.getConfiguration (). Редуктор имеет три основных этапа - перемешивание, сортировка и сокращение.

  • Shuffle - Редуктор копирует отсортированный вывод из каждого сопоставителя с помощью HTTP по сети.

  • Sort- Фреймворк слиянием сортирует входные данные Reducer по ключам (поскольку разные Mappers могут выводить один и тот же ключ). Фазы перемешивания и сортировки происходят одновременно, т. Е. Во время выборки выходных данных они объединяются.

  • Reduce - На этом этапе метод reduce (Object, Iterable, Context) вызывается для каждого <key, (collection of values)> в отсортированных входных данных.

Метод

reduceэто самый известный метод класса Reducer. Синтаксис определен ниже -

reduce(KEYIN key, Iterable<VALUEIN> values, org.apache.hadoop.mapreduce.Reducer.Context context)

Этот метод вызывается один раз для каждого ключа в коллекции пар ключ-значение.