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