tutorial spark español aws apache-spark spark-streaming

apache-spark - español - tutorial spark



Mejores prácticas de implementación de aplicaciones Apache Spark (1)

Tengo un par de casos de uso para aplicaciones / scripts de Apache Spark, generalmente de la siguiente forma:

Caso de uso de ETL general : más específicamente, una transformación de una familia de columnas de Cassandra que contiene muchos eventos (piense en el origen de eventos) en varias familias de columnas agregadas.

Caso de uso de transmisión : análisis en tiempo real de los eventos a medida que llegan al sistema.

Para (1) , tendré que iniciar la aplicación Spark periódicamente.

Para (2) , simplemente inicie el proceso de Spark Streaming durante el arranque y déjelo en marcha.

(Nota: estoy usando Spark Standalone como administrador de clúster, por lo que no hay hilos ni mesos)

Estoy tratando de descubrir las estrategias de implementación más comunes / mejores para las aplicaciones Spark.

Hasta ahora las opciones que puedo ver son:

  1. Implementar mi programa como un jar y ejecutar las diversas tareas con spark-submit, que parece ser la forma recomendada en los documentos de chispa. Algunas reflexiones sobre esta estrategia:

    • ¿Cómo se inician / detienen las tareas, simplemente utilizando scripts bash simples?
    • ¿Cómo se gestiona la programación? - simplemente usar cron?
    • alguna resiliencia? (por ejemplo, ¿quién programa los trabajos para ejecutarse si el servidor del controlador muere?)
  2. Creando una aplicación web separada como el programa controlador.

    • crea un contexto de chispa programáticamente para hablar con el grupo de chispas
    • permitiendo a los usuarios iniciar tareas a través de la interfaz http
    • Uso de cuarzo (por ejemplo) para gestionar la programación
    • podría usar el clúster con la elección del guardián del zoológico para la resiliencia
  3. Servidor de tareas Spark ( https://github.com/ooyala/spark-jobserver )

    • No creo que haya mucho beneficio sobre (2) para mí, ya que todavía no tengo muchos equipos y proyectos que hablen con Spark, y de todos modos necesitaría alguna aplicación para hablar con el servidor de trabajo.
    • No hay horario incorporado hasta donde puedo ver.

Me gustaría entender el consenso general de una estrategia de implementación simple pero robusta: hasta el momento no he podido determinar una al rastrear la red.

¡Muchas gracias!


Aunque no esté utilizando Mesos para Spark, puede echar un vistazo a

- Chronos ofreciendo un cron distribuido y tolerante a fallas.

- Marathon a Mesos framework para aplicaciones de larga duración.

Tenga en cuenta que esto no significa que tenga que mover el despliegue de su chispa a los mesos, por ejemplo, podría usar los chronos para activar la emisión de chispas.

Espero haber entendido tu problema correctamente y esto te ayuda un poco!