Распределенное планирование работы, управление и отчетность - PullRequest
9 голосов
/ 16 декабря 2009

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

Мне интересно, существует ли что-либо в домене Java для распределенного выполнения заданий, которые не так легко выразить как проблемы MapReduce? Например:

  • Задания, требующие координации и синхронизации задач. Например, они могут включать последовательное выполнение задач, но при этом возможно выполнение некоторых задач одновременно:

                   .-- B --.
            .--A --|       |--.
            |      '-- C --'  |
    Start --|                 |-- Done
            |                 |
            '--D -------------'
    
  • Задачи с интенсивным использованием процессора, которые вы хотели бы распределить, но не предоставили никаких выходных данных для уменьшения - например, преобразование / изменение размера изображения.

Так есть ли инфраструктура / платформа Java, которая обеспечивает такую ​​распределенную вычислительную среду? Или такие вещи приемлемы / достижимы с помощью Hadoop - и если да, то есть ли какие-то шаблоны / рекомендации для такого рода работ?

Ответы [ 6 ]

3 голосов
/ 04 января 2010

С тех пор я нашел Spring Batch и Spring Batch Integration , которые, кажется, отвечают многим моим требованиям. Я дам вам знать, как у меня дела.

2 голосов
/ 17 декабря 2009

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

0 голосов
/ 25 августа 2016

Попробуйте Redisson рамки. Это обеспечивает легкий API для выполнения и планирования java.util.concurrent.Callable и java.lang.Runnable задач. Вот документация о распределенной Службе исполнителя и Служба планировщика

0 голосов
/ 26 марта 2014

ProActive Scheduler , кажется, соответствует вашим требованиям, особенно сложным рабочим процессам, которые вы упомянули при координации задач. Это с открытым исходным кодом и на основе Java. Вы можете использовать его для запуска чего угодно, заданий Hadoop, сценариев, кода Java, ...

Отказ от ответственности: я работаю в компании за ней

0 голосов
/ 16 декабря 2009

Я полагаю, что довольно много проблем можно выразить как проблемы уменьшения карты.

Для проблем, которые вы не можете изменить в соответствии со структурой, вы можете взглянуть на настройку своей собственной, используя Java ExecutorService . Но это будет ограничено одной JVM, и это будет довольно низкий уровень. Это позволит легко координировать и синхронизировать однако.

0 голосов
/ 16 декабря 2009

Полагаю, вам нужен механизм рабочего процесса для задач с интенсивным использованием ЦП (также известен «научный рабочий процесс», например, http://www.extreme.indiana.edu/swf-survey). Но я не уверен, насколько вы хотите, чтобы он был распределен. Обычно все механизмы рабочего процесса иметь «единую точку отказа».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...