Параллелизм в рабочем процессе Oozie: сколько и как регулировать

Допустим, у нас есть рабочий процесс Oozie, в котором есть узел действия копирования, а затем узел действия Shell. Могу ли я запустить несколько экземпляров такого рабочего процесса OOzie и запустить их параллельно? Как насчет количества параллелизма, которое может достигать тысяч и/или даже миллионов? Возможно ли это, или даже Oozie поддерживает параллелизм высокого уровня?

Если нет, то нам придется рассмотреть вопрос о регулировании и введении ограничения на количество одновременных экземпляров рабочего процесса Oozie. Мы бы предпочли дросселировать это на стороне сервера/Oozie (в основном с любой готовой функциональностью программного обеспечения Oozie), а не на стороне клиента/вызываемого абонента. Например, у нас есть огромный скрипт запуска с такими строками. Мы хотим запустить это за один раз, а затем позволить Узи разобраться, как задушить все эти экземпляры на себе. Мы не хотим разбивать его на несколько более мелких фрагментов, а затем запускать по одному фрагменту за раз.

oozie job -oozie http://myhost.com:11000/oozie -config job1.properties -run
oozie job -oozie http://myhost.com:11000/oozie -config job2.properties -run
......
oozie job -oozie http://myhost.com:11000/oozie -config job1000000.properties -run

person user908645    schedule 06.02.2014    source источник


Ответы (1)


Вы не сможете иметь параллелизм рабочего процесса Oozie выше, чем количество слотов карт в вашем кластере, потому что действие Shell выполняется заданием MR с одним преобразователем и нулевым редьюсером.

Если у вас есть много экземпляров рабочего процесса, лучший механизм — использовать координатора Oozie. Это позволит отслеживать завершение каждого экземпляра и легко управлять параллелизмом. Координатор Oozie имеет тег <concurrency>, который управляет тем, сколько экземпляров рабочего процесса будет выполняться параллельно, и тег <throttle>, который контролирует, сколько экземпляров будет переведено в состояние ожидания, прежде чем появится свободный параллелизм для запуска одного из них.

См.: https://oozie.apache.org/docs/3.1.3-incubating/CoordinatorFunctionalSpec.html#a6.3._Synchronous_Coordinator_Application_Definition

Обратите внимание, что по умолчанию координатор Oozie ждет 5 минут между каждым опросом о необходимости создания нового экземпляра. Если ваши рабочие процессы выполняются менее чем за 5 минут, процесс будет узким местом на этом интервале. Вы можете изменить это с помощью свойства oozie.service.CoordMaterializeTriggerService.lookup.interval (в секундах) в файле oozie-site.xml.

person Jeremy Beard    schedule 16.02.2014
comment
Отличная работа Джереми! Большое спасибо! Я также нахожу эти две конфигурации, дросселирование и параллелизм, и экспериментирование говорит о том же. Последний вопрос, вы уверены, что координатор можно настроить на уровне секунд? По этой ссылке oozie.apache. org/docs/3.1.3-incubating/, 1 минута — это самая быстрая частота, с которой мы можем работать? - person user908645; 18.02.2014
comment
минута - это минимум ... Я пробовал с сек, но не повезло. - person ChikuMiku; 27.03.2017