Question

J'ai récemment eu un jeu autour avec Hadoop et a été impressionné est la planification, la gestion et les rapports des emplois MapReduce. Il semble rendre la distribution et l'exécution de nouveaux emplois tout à fait transparente, ce qui permet au développeur de se concentrer sur la mise en œuvre de leur emploi.

Je me demande si quelque chose existe dans le domaine Java pour l'exécution distribuée d'emplois qui ne sont pas facilement exprimé en problèmes MapReduce? Par exemple:

  • Les emplois qui requièrent une coordination des tâches et la synchronisation. Par exemple, ils peuvent impliquer l'exécution séquentielle des tâches mais il est possible d'exécuter certaines tâches simultanément:

                   .-- B --.
            .--A --|       |--.
            |      '-- C --'  |
    Start --|                 |-- Done
            |                 |
            '--D -------------'
    
  • CPU des tâches intensives que vous souhaitez distribuer, mais ne fournit pas de résultats pour réduire -. conversion d'image / redimensionnement par exemple

Ainsi est-il un framework Java / plate-forme qui fournit un environnement de calcul distribué? Ou est-ce genre de chose acceptable / réalisable en utilisant Hadoop - et si oui, y at-il des modèles / lignes directrices pour ce type d'emplois

Était-ce utile?

La solution

J'ai trouvé depuis Spring Batch et Spring Batch d'intégration qui semblent répondre à bon nombre de mes exigences. Je vais vous laisser savoir comment je me entends.

Autres conseils

Jetez un oeil à Quartz . Je pense qu'il soutient des choses comme la gestion à distance des emplois et le regroupement de plusieurs machines pour exécuter les travaux.

Je suppose que vous êtes à la recherche d'un moteur de workflow pour des tâches intensives CPU (également "flux de travail scientifique", par exemple http://www.extreme.indiana.edu/swf-survey ). Mais je ne suis pas sûr de savoir comment distribuer voulez-vous qu'il soit. En général, tous les moteurs de workflow ont un « point unique de défaillance ».

Je crois assez peu de problèmes peuvent être exprimés en carte-réduire les problèmes.

Pour les problèmes que vous ne pouvez pas modifier pour adapter la structure de votre peut regarder la configuration de votre propre à l'aide de Java ExecutorService . Mais il sera limité à une machine virtuelle Java et il sera très faible niveau. Il permettra une coordination facile et la synchronisation cependant.

ProActive Scheduler semble répondre à vos besoins, en particulier les flux de travail complexes que vous mentionnais avec la coordination des tâches. Il est open source et Java. Vous pouvez l'utiliser pour exécuter quoi que ce soit, les emplois Hadoop, scripts, code Java, ...

Disclaimer: Je travaille pour la société derrière

Redisson cadre. Il fournit api facile à exécuter et le calendrier et les tâches java.util.concurrent.Callable java.lang.Runnable. Voici la documentation sur distribué service Exécuteur et service Planificateur

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top