Как распараллелить вычислительно Java-приложение на несколько машин?
Я бы как раз использовал Spark или Ignite, чтобы не изобретать велосипед.
Я конечно не сталкивался на практике но много читал про решения подобных задач и вот пара мыслей:
1) Если все лежит в БД то почему бы не начинать параллелить именно с нее. Скажем в БД (возможно отдельной) метить кто забрал себе данные, дальше ноды цепляются к БД, берут пачку данных и метят что они уже в работе, т.е. нода 2 не возьмет данные которые уже на ноде 1. Это из простых решений в лоб.
2) Все последующие это реализациия в библиотеках, gridgain , штатный RMI,  Apache Ignite, Apache River.