Распределенное планирование заданий, управление ими и отчетность
-
19-09-2019 - |
Вопрос
Недавно я поиграл с Хадуп и был впечатлен его планированием, управлением и отчетностью заданий MapReduce.По-видимому, это делает распространение и выполнение новых заданий довольно плавным, позволяя разработчику сконцентрироваться на реализации своих заданий.
Мне интересно, существует ли что-нибудь в домене Java для распределенного выполнения заданий, которые нелегко выразить как проблемы MapReduce?Например:
Задания, требующие координации задач и синхронизации.Например, они могут включать последовательное выполнение задач, но некоторые задачи возможно выполнять одновременно:
.-- B --. .--A --| |--. | '-- C --' | Start --| |-- Done | | '--D -------------'
Задачи, требующие больших затрат процессора, которые вы хотели бы распространять, но не предоставляющие никаких результатов для уменьшения - например, преобразование изображений / изменение размера.
Итак, существует ли Java-фреймворк / платформа, которая предоставляет такую распределенную вычислительную среду?Или такого рода вещи приемлемы / достижимы с использованием Hadoop - и если да, существуют ли какие-либо шаблоны / рекомендации для такого рода заданий?
Решение
С тех пор я нашел Весенняя партия и Интеграция весенних партий которые, по-видимому, удовлетворяют многим моим требованиям.Я дам вам знать, как у меня дела.
Другие советы
Взгляните на Кварц.Я думаю, что он поддерживает такие вещи, как удаленное управление заданиями и кластеризация нескольких машин для выполнения заданий.
Я предполагаю, что вы ищете механизм документооборота для задач с интенсивным использованием процессора (также знаете "научный документооборот", например http://www.extreme.indiana.edu/swf-survey).Но я не уверен, насколько распространенным вы хотите его видеть.Обычно все механизмы документооборота имеют "единую точку отказа".
Я полагаю, что довольно много проблем можно выразить в виде проблем с уменьшением карты.
Для проблем, которые вы не можете изменить, чтобы они соответствовали структуре, вы можете посмотреть на настройку своих собственных с помощью Java Служба исполнителя.Но это будет ограничено одной JVM, и это будет довольно низкий уровень.Однако это позволит упростить координацию и синхронизацию.
Упреждающий Планировщик кажется, соответствует вашим требованиям, особенно сложным рабочим процессам, которые вы упомянули при координации задач.Он имеет открытый исходный код и основан на Java.Вы можете использовать его для запуска чего угодно, заданий Hadoop, скриптов, Java-кода...
Отказ от ответственности:Я работаю на Компания за этим
Попробуй Редиссон рамки.Он предоставляет простой API для выполнения и планирования java.util.concurrent.Callable
и java.lang.Runnable
задачи.Вот документация о распределенном Услуги исполнителя и Служба планировщика