Pregunta

Recientemente tuve una obra de teatro con Hadoop y quedó impresionado con su programación, gestión e informes de trabajos de MapReduce. Parece que la distribución y ejecución de nuevos empleos es bastante fluida, lo que permite al desarrollador concentrarse en la implementación de sus trabajos.

Me pregunto si existe algo en el dominio Java para la ejecución distribuida de trabajos que no se expresan fácilmente como problemas de MapReduce. Por ejemplo:

  • Trabajos que requieren coordinación de tareas y sincronización. Por ejemplo, pueden involucrar la ejecución secuencial de tareas, pero es factible ejecutar algunas tareas simultáneamente:

                   .-- B --.
            .--A --|       |--.
            |      '-- C --'  |
    Start --|                 |-- Done
            |                 |
            '--D -------------'
    
  • Tareas intensivas de CPU que le gustaría distribuir, pero no proporcione ninguna salida para reducir la conversión/cambio de tamaño de imagen, por ejemplo.

Entonces, ¿hay un marco/plataforma Java que proporcione dicho entorno informático distribuido? ¿O es este tipo de cosas aceptable/alcanzable usando Hadoop, y si es así, ¿hay algún patrón/directrices para este tipo de trabajos?

¿Fue útil?

Solución

Desde entonces he encontrado Lote de primavera y Integración de lotes de primavera que parecen abordar muchos de mis requisitos. Te haré saber cómo me va.

Otros consejos

Echa un vistazo a Cuarzo. Creo que admite cosas como administrar trabajos de forma remota y agrupar varias máquinas para ejecutar trabajos.

Supongo que está buscando un motor de flujo de trabajo para tareas intensivas de CPU (también conozca el "flujo de trabajo científico", por ejemplo http://www.extreme.indiana.edu/swf-survey). Pero no estoy seguro de cuán distribuido quieres que sea. Por lo general, todos los motores de flujo de trabajo tienen un "punto único de falla".

Creo que algunos problemas pueden expresarse como problemas de reducción de mapas.

Para problemas que no puede modificar para que se ajuste a la estructura que puede considerar la configuración de los suyos con Java Servicio de ejecutor. Pero se limitará a un JVM y será de un nivel bastante bajo. Sin embargo, permitirá una fácil coordinación y sincronización.

Programador proactivo Parece adaptarse a sus requisitos, especialmente los flujos de trabajo complejos que mencionó con la coordinación de tareas. Es de código abierto y basado en Java. Puede usarlo para ejecutar cualquier cosa, trabajos de Hadoop, scripts, código Java, ...

Descargo de responsabilidad: trabajo para el empresa Detrás de eso

Probar Redisson estructura. Proporciona una API fácil de ejecutar y programar java.util.concurrent.Callable y java.lang.Runnable Tareas. Aquí hay documentación sobre distribuido Servicio de ejecutor y Servicio de programador

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top