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)
Этот метод вызывается один раз для каждого ключа в коллекции пар ключ-значение.