Estoy desarrollando una aplicación en la que necesito distribuir un conjunto de tareas en un grupo potencialmente grande de máquinas diferentes.Marco informático distribuido para Clojure/Java
Idealmente, me gustaría una forma muy simple e idiomática de hacer esto en Clojure, p. algo así como:
; create a clustered set of machines
(def my-cluster (new-cluster list-of-ip-addresses))
; define a task to be executed
(deftask my-task (my-function arg1 arg2))
; run a task 10000 times on the cluster
(def my-job (run-task my-cluster my-task {:repeat 10000})
; do something with the results:
(some-function (get-results my-job))
bonificación si se puede hacer algo como Map-Reduce en el clúster, así .....
Cuál es la mejor manera de lograr algo como esto? ¿Tal vez podría envolver una biblioteca Java adecuada?
ACTUALIZACIÓN:
Gracias por toda la sugerencia de Apache Hadoop - parece que podría caber la cuenta, sin embargo, parece un poco como una exageración, ya que no estoy necesitando un sistema de almacenamiento de datos distribuidos como utiliza Hadoop (es decir, no necesito procesar miles de millones de registros) ... algo más ligero y enfocado en tareas de cómputo solo sería preferible si existiera.
en el grupo google de clojure, ha habido discusiones acerca de los estándares de terracota, GridGain y Java (JMS, JXTA/shoal, JINI), puede buscarlos en google. –