J'ai récemment eu une pièce de théâtre avec Hadoop et a été impressionné par la planification, la gestion et la signification de MapReduce travaux. Il semble que la distribution et l'exécution de nouveaux emplois sont assez transparentes, permettant au développeur de se concentrer sur la mise en œuvre de leurs emplois.
Je me demande si quelque chose existe dans le domaine Java pour l'exécution distribuée des travaux qui ne sont pas facilement exprimés comme des problèmes de mapReduce? Par exemple: p>
Emplois nécessitant une coordination et une synchronisation de tâches. Par exemple, ils peuvent impliquer une exécution séquentielle de tâches pourtant, il est possible d'exécuter certaines tâches simultanément: P>
Les tâches intensives de la CPU que vous souhaitez distribuer, mais ne fournissez aucune sortie pour réduire la conversion / redimensionnement de l'image par exemple. P> LI>
ul> Il y a-t-il un cadre / plate-forme Java qui fournit un tel environnement informatique distribué? Ou est-ce que ce genre de chose est acceptable / réalisable à l'aide de Hadoop - et si oui, y a-t-il des habitudes / directives pour ces types d'emplois? P> P>
6 Réponses :
Je suppose que vous recherchez un moteur de flux de travail pour les tâches intensives de la CPU (connaissez également "le flux de travail scientifique", par exemple http://www.extreme.indiana.edu/swf-survey ). Mais je ne suis pas sûr à quel point voulez-vous être distribué. Habituellement, tous les moteurs de flux de travail ont un "point unique d'échec". P>
Je crois que de nombreux problèmes peuvent être exprimés en tant que problèmes de la carte. P>
Pour des problèmes que vous ne pouvez pas modifier pour vous adapter à la structure, vous pouvez rechercher la configuration de votre propre utilisation de Java ExecuTelservice . Mais il sera limité à un JVM et il sera assez bas niveau. Il permettra une coordination et une synchronisation faciles cependant. P>
Jetez un coup d'œil à Quartz . Je pense qu'il soutient des choses comme la gestion des emplois à distance et en regroupant plusieurs machines pour exécuter des emplois. p>
J'ai depuis trouvé lot de printemps et Intégration du lot de printemps qui semble aborder de nombreuses exigences. Je vous ferai savoir comment je vais continuer. P>
Comment Spring Batch aide-t-il à paralléliser le travail sur un groupe comme Hadoop?
planificateur proactif semble adapté à vos besoins, en particulier les flux de travail complexes que vous avez mentionnés avec la coordination des tâches. Il est open source et Java basé. Vous pouvez l'utiliser pour courir n'importe quoi, emplois Hadoop, scripts, code Java, ... p>
Disclaimer: je travaille pour le société derrière elle p>
Essayez Cadre de Redisson . Il fournit une API facile à exécuter et à planifier java.util.concurrent.callable code> et
java.lang.runnable code> tâches. Voici la documentation sur Distributed SERVICE EXECUTOR < / a> et Service de planificateur p>