La respuesta a esto será algo así como "depende".
Para cuarzo 1.x, la respuesta es que la ejecución del trabajo siempre (solo) en un nodo más o menos aleatorio. Donde "aleatoriedad" realmente se basa en cualquier nodo que llegue a ella primero. Para planificadores "ocupados" (donde siempre hay muchos trabajos para ejecutar) esto termina dando una carga bastante equilibrada a través de los nodos del clúster. Para el programador no ocupado (solo un trabajo ocasional para disparar) a veces puede parecer que un solo nodo está ejecutando todos los trabajos (porque el programador busca el siguiente trabajo para disparar cada vez que se completa la ejecución del trabajo, por lo que el nodo acaba de terminar una ejecución tiende a encontrar el próximo trabajo para ejecutar).
Con cuarzo 2.0 (que está en beta) la respuesta es la misma que la anterior, para cuarzo estándar. Pero Terracotta ha creado una Enterprise Edition de TerracottaJobStore que ofrece un control de clústeres más complejo: al programar trabajos, puede especificar qué nodos del clúster son válidos para la ejecución del trabajo, o puede especificar características/requisitos de nodo, tales como como "un nodo con al menos 100 MB de memoria RAM disponible". Esto también funciona junto con ehcache, de modo que puede especificar el trabajo para ejecutar "en el nodo donde los datos introducidos por X son locales".
gracias por la información. – ButterflyCoder