Сокращение карты через Oozie

Если я использую Oozie для запуска задания MapReduce, есть ли конкретное число о том, сколько картографов будет запущено? Это:

  1. один для Oozie и один для работы по уменьшению карты или
  2. один для Oozie и один картограф для каждого блока 64 МБ (размер блока по умолчанию)

person Umes Bastola    schedule 02.08.2016    source источник


Ответы (3)


Приведенные выше ответы сосредоточены на том, сколько карт и уменьшает потребность в работе mapreduce. Однако, поскольку вы конкретно спрашиваете об oozie, я поделюсь своим опытом работы с mapreduce (в свинье) через Oozie.

Объяснение

Когда вы запускаете рабочий процесс oozie, вам понадобится 1 приложение для пряжи. Я не уверен, в чем логика, но похоже, что этим приложениям обычно требуется 1 карта, а иногда и 2.

Помимо вышеперечисленного, вам по-прежнему нужно такое же количество мапперов и редукторов для фактической работы, как если бы вы не использовали oozie. (Если вы видите число, отличное от ожидаемого, это может быть связано с тем, что вы передали определенные параметры на карте или уменьшили свойства при вызове скрипта).

Предупреждение

Вышеупомянутое означает, что если бы у вас было 100 доступных контейнеров и запущено 100 рабочих процессов (например, запуск ежедневного задания с датой начала 100 дней в прошлом), вполне вероятно, что рабочие процессы займут все доступные контейнеры и фактическая работа приостановлена ​​на неопределенный срок.

person Dennis Jaheruddin    schedule 03.08.2016
comment
Что касается вашего комментария выше, независимо от того, запускаете ли вы задание с Oozie или без него, вы должны увидеть одно и то же количество картографов/редьюсеров. - person OneCricketeer; 03.08.2016

Краткий ответ: Oozie запускает задание mapreduce, отправляя одно задание только для карты в кластер под названием Oozie launcher. Согласен с @Dennis Jaheruddin.

Подробный ответ после моего исследования: модель казни Узи

Модель выполнения Oozie отличается от стандартного подхода, который пользователи используют для запуска заданий Hadoop. Когда пользователь вызывает инструмент командной строки Hadoop, Hive или Pig с пограничного узла Hadoop, соответствующий исполняемый файл клиента запускается на этом узле, настроенном для связи и отправки заданий в кластер Hadoop. Когда одни и те же задания определяются и отправляются с помощью действия рабочего процесса Oozie, все работает по-другому.

Предположим, вы отправляете задание рабочего процесса с помощью интерфейса командной строки Oozie на пограничном узле. Клиент Oozie фактически отправляет рабочий процесс на сервер Oozie, который обычно работает на другом узле. Независимо от того, где он работает, сервер Oozie несет ответственность за отправку и выполнение базовых заданий MapReduce в кластере Hadoop. Oozie не делает этого с помощью стандартных клиентских инструментов, установленных локально на узле сервера Oozie. Вместо этого он сначала отправляет задание MapReduce, называемое «задание запуска», которое, в свою очередь, запускает задание Hadoop, Hive или Pig с использованием соответствующих клиентских API.

Примечание по импу. Средство запуска Oozie — это, по сути, работа только с картой, запускающая один модуль сопоставления в кластере Hadoop. Это задание сопоставления знает, что делать для конкретного действия, которое оно должно выполнять, и выполняет соответствующие действия, используя библиотеки для Hadoop, Pig и т. д. Это приведет к другим Задания MapReduce запускаются по мере необходимости. Эти задания Oozie называются "асинхронными действиями" на языке Oozie. Oozie не запускает эти действия на своем собственном сервере, а запускает их в кластере Hadoop с помощью задания запуска. Причина, по которой сервер Oozie «аутсорсинг» средство запуска кластера Hadoop предназначено для защиты от непредвиденных рабочих нагрузок, а также для изоляции пользовательского кода от собственных служб. В конце концов, у Узи есть доступ к потрясающей распределенной системе в виде кластера Hadoop.

введите здесь описание изображения

Переходя к действиям Mapreduce, вы можете установить количество задач карты, но это не гарантируется, это будет зависеть от того, как описано ниже.

Количество карт обычно определяется общим размером входных данных, то есть общим количеством блоков входных файлов.

Количество карт

Количество карт обычно определяется количеством блоков DFS во входных файлах. Хотя это заставляет людей корректировать размер блока DFS, чтобы настроить количество карт. Правильный уровень параллелизма для карт, по-видимому, составляет около 10-100 карт на узел, хотя мы довели его до 300 или около того для задач с картами, которые требуют очень мало ресурсов процессора. Настройка задачи занимает некоторое время, поэтому лучше, если на выполнение карт потребуется хотя бы минута.

person Ram Ghadiyaram    schedule 02.08.2016
comment
о, хорошо, и помимо количества сгенерированных мапперов, то есть потолка (blockSize/64MB), есть ли необходимость в одном отдельном маппере для самого Oozie или нет? - person Umes Bastola; 03.08.2016
comment
Обратите внимание, что это не согласуется с моими наблюдениями. - person Dennis Jaheruddin; 03.08.2016
comment
@RamPrasadG Да, обычно 1 на рабочий процесс, как указано в моем ответе. - person Dennis Jaheruddin; 03.08.2016
comment
@DennisJaheruddin: Вы правы (+1). Я провел некоторое исследование и обновил свой ответ. - person Ram Ghadiyaram; 03.08.2016

Количество картографов зависит от количества разделений логического ввода и не зависит от количества блоков. Вы можете управлять количеством разделений ввода с помощью вашей программы.

Обратитесь к этому https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ для получения дополнительной информации о том, как разделение ввода влияет на количество картографов и как создавать разделения ввода.

person siddhartha jain    schedule 03.08.2016
comment
Разделение входных данных определяется размером блока и возможностью разделения файла, верно? - person OneCricketeer; 03.08.2016