I have done several projects in this regard, but at the end they always ended up being custom solutions that basically
- separated the problem in grids
- did the processing in each individual node and copied the result to a temp table / data store
- merged all the solutions to a single result table and optionally handled boundary conditions. Handling boundary conditions was only required for cases where features needed to be stitched or massaged (for example when building a topology in a distributed manner, you want the boundary features to snap).
Funny enough, every single time I solved a problem of this nature, I used a different technology, mostly because that was the fad of the time. At the end, what you want is a message passing library that has a job queue manager, spawns processes on the different nodes, and that has some sort of synchronization mechanism (Semapahore's, Barrier's, etc) and some way to handle errors and retry. All the projects I mention below have these things.
For geo, I have used (in chronological order):
(old school)
(newer)
There are several others that people use.
At the end, any of these would cut it (albeit in a slightly different way), so it boils down to picking one that has a community that is helpful.
Also, on every node, you would have to use a library to do the GIS geometry operations. The recommendation for which one to use would come based on the language that you prefer to code this in. But I am sure the options that most people would give you would be:
Or some other library that serves as wrappers to one of these.