Я недавно поиграл с Hadoop и был впечатлен его планированием, управлением и составлением отчетов о заданиях MapReduce. Похоже, что распределение и выполнение новых заданий достаточно плавное, что позволяет разработчику сосредоточиться на реализации своих заданий.
Мне интересно, существует ли что-либо в домене Java для распределенного выполнения заданий, которые не так легко выразить как проблемы MapReduce? Например:
Задания, требующие координации и синхронизации задач. Например, они могут включать последовательное выполнение задач, но при этом возможно выполнение некоторых задач одновременно:
.-- B --.
.--A --| |--.
| '-- C --' |
Start --| |-- Done
| |
'--D -------------'
Задачи с интенсивным использованием процессора, которые вы хотели бы распределить, но не предоставили никаких выходных данных для уменьшения - например, преобразование / изменение размера изображения.
Так есть ли инфраструктура / платформа Java, которая обеспечивает такую распределенную вычислительную среду? Или такие вещи приемлемы / достижимы с помощью Hadoop - и если да, то есть ли какие-то шаблоны / рекомендации для такого рода работ?