Scaling Out con Celery¶
CeleryExecutor
è uno dei modi in cui è possibile ridimensionare il numero di lavoratori. Per questo lavoro, è necessario impostare un backend di Celery (RabbitMQ, Redis, …) e cambiare airflow.cfg
per puntare il parametro executor aCeleryExecutor
e fornire le relative impostazioni di Celery.
Per ulteriori informazioni sulla creazione di un broker Celery, consultare la documentazione esaustiva di Celery sull’argomento.
Ecco alcuni requisiti imperativi per i tuoi lavoratori:
-
airflow
deve essere installato e la CLI deve essere nel percorso -
Le impostazioni di configurazione del flusso d’aria devono essere omogenee in tutto il cluster
-
Gli operatori che vengono eseguiti sul lavoratore devono avere le loro dipendenze in quel contesto. Ad esempio, se si utilizza
HiveOperator
, la CLI hive deve essere installata su quella casella, o se si utilizzaMySqlOperator
, la libreria Python richiesta deve essere disponibile inPYTHONPATH
in qualche modo -
Il lavoratore deve avere accesso al suo
DAGS_FOLDER
e devi sincronizzare i filesystem con i tuoi mezzi. Una configurazione comune sarebbe quella di memorizzare il tuo DAGS_FOLDER in un repository Git e sincronizzarlo su macchine usando Chef, Puppet, Ansible o qualsiasi altra cosa tu usi per configurare macchine in yourenvironment. Se tutte le caselle hanno un comune punto di mount, avendo yourpipelines file condivisi non ci dovrebbero funzionare bene
A dare il via a un lavoratore, è necessario impostare il Flusso d’aria e dare il via alla workersubcommand
airflow worker
Il lavoratore dovrebbe iniziare a salire i compiti appena licenziato inits direzione.
Nota che puoi anche eseguire “Celery Flower”, un’interfaccia utente web costruita su Celery, per monitorare i tuoi lavoratori. È possibile utilizzare il comando di scelta rapida airflow flower
per avviare un server Web Flower.
Si noti che è necessario avere la libreria python flower
già installata sul sistema. Il modo consigliato è installare il fascio di sedano del flusso d’aria.
pip install 'apache-airflow'
Alcuni avvertimenti:
-
Assicurarsi di utilizzare un backend dei risultati supportato dal database
-
Assicurati di impostare un timeout di visibilità che superi l’ETA dell’attività più lunga
-
Le attività possono consumare risorse. Assicurati che il tuo lavoratore abbia risorse sufficienti per eseguire attività worker_concurrency
-
I nomi delle code sono limitati a 256 caratteri, ma ogni backend del broker potrebbe avere le proprie restrizioni