snorkel - apache airflow tutorial
Ejecutor de lotes AWS con flujo de aire (3)
Actualmente hay un SequentialExecutor, un LocalExecutor, un DaskExecutor, un CeleryExecutor y un MesosExecutor. Escuché que están trabajando en AIRFLOW-1899 para 2.0 para presentar un KubernetesExecutor. Por lo tanto, al observar a Dask y Celery, no parece que admitan un modo en el que sus trabajadores se crean por tarea. Los mesos podrían, Kubernetes debería, pero luego tendría que escalar los grupos para que los trabajadores tomen en cuenta la desactivación de los nodos cuando no sean necesarios.
Hicimos un pequeño trabajo para obtener una configuración de formación de nubes en la que los trabajadores de apio escalan y se basan en métricas de la observación de la nube de la carga de CPU promedio entre los trabajadores etiquetados.
Actualmente estoy usando el flujo de aire en los servicios web de Amazon usando instancias de EC2. El gran problema es que el uso promedio de las instancias es aproximadamente del 2% ...
Me gustaría usar una arquitectura escalable y crear instancias solo durante la duración del trabajo y eliminarlo. Vi en la hoja de ruta que se suponía que AWS BATCH sería un ejecutor en 2017, pero no hay novedades al respecto.
¿Sabe si es posible usar AWS BATCH como un ejecutor para todos los trabajos de flujo de aire?
Saludos, Romain.
Necesitaría crear un Ejecutor personalizado ( extendido desde BaseExecutor
) capaz de enviar y monitorear los trabajos por lotes de AWS. También es posible que deba crear una imagen Docker personalizada para las instancias.
No hay ejecutor, pero hay un operador disponible desde la versión 1.10. Después de crear un entorno de ejecución, cola de trabajos y definición de trabajo en AWS Batch, puede usar AWSBatchOperator
para activar trabajos.
Aquí está el código fuente .