Учебники

MapReduce — API

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

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

Интерфейс JobContext

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

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

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

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

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

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

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

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

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

Класс работы

Класс Job является наиболее важным классом в API MapReduce. Это позволяет пользователю настраивать задание, отправлять его, контролировать его выполнение и запрашивать состояние. Методы set работают только до отправки задания, после чего они генерируют исключение 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 Работа ()
2 Job (Конфиг конфигурации)
3 Job (Конфигурация conf, String jobName)

методы

Вот некоторые из важных методов класса Job:

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

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

2 getJobState ()

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

3 завершено()

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

4 setInputFormatClass ()

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

5 setJobName (имя строки)

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

6 setOutputFormatClass ()

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

7 setMapperClass (класс)

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

8 setReducerClass (класс)

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

9 setPartitionerClass (класс)

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

10 setCombinerClass (класс)

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

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

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

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

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

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

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

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

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

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

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

Mapper Class

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

метод

карта является наиболее известным методом класса Mapper. Синтаксис определен ниже —

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

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

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

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

  • Перемешать — Редуктор копирует отсортированный вывод из каждого Mapper, используя HTTP по всей сети.

  • Сортировать — платформа объединяет сортировку входов Редуктора по ключам (поскольку разные Mappers могут выводить один и тот же ключ). Фазы тасования и сортировки происходят одновременно, т. Е. Во время выборки выходов они объединяются.

  • Сокращение — На этом этапе метод Redu (Object, Iterable, Context) вызывается для каждого <ключа, (набора значений)> в отсортированных входных данных.

Перемешать — Редуктор копирует отсортированный вывод из каждого Mapper, используя HTTP по всей сети.

Сортировать — платформа объединяет сортировку входов Редуктора по ключам (поскольку разные Mappers могут выводить один и тот же ключ). Фазы тасования и сортировки происходят одновременно, т. Е. Во время выборки выходов они объединяются.

Сокращение — На этом этапе метод Redu (Object, Iterable, Context) вызывается для каждого <ключа, (набора значений)> в отсортированных входных данных.

метод

Редукция — самый известный метод класса Редукторов. Синтаксис определен ниже —

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

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