9.3 Airflow
Last updated
Last updated
A Airnb iniciou como startup e tomou proporções globais, o que gerou uma complexidade na orquestracão dos fluxos de dados. Em 2014 iniciou a criação do Airflow para facilitar a cordenação publicado em 2015.
Desde a publicação a ferramenta ganhou força e foi encubada pela Apache Foundation em 2016.
Os principais são:
Scheduler: Responsável por agendar a execucão das DAGs
WebServer: WebUi para mamipulação dos medatados e DAGs
Workers: Reponsável pela execução dos processo
Metadata databases: Responsável por armazenar os metadados do Airflow
Dag Directory: Contem os arquivos de DAGs
Os workflows do Airflow são representados por DAGs
Para preparar as configurações do Airflow crie uma pasta serving-batch/airflow.
O arquivo de docker compose nos ajuda a gerir os containers. Neste exemplo vamos criar um volume para as dags e os modelos. Copie o modelo joblib na pasta model do Airflow.
O arquivo de requirimets segue as mesmas versões das bilbiotecas que usamos no spark. Repare que também incluimos o plugin do Apache Livy do Spark que será utilizado para integrar o Spark com o Airflow.
O Scheduler do Airflow tem vários recursos de periodicidade e triggers de execução.
Inclua a seguinte função na sua DAG:
O decorator @task indica que esta função é uma task do Airflow.
Inclua ela no fim como tarefa5 e veja o resultado:
Repare que a funcão é executada e o contexto da DAG é apresentado no log das tasks.
Agora que já sabemos como orquestrar um compando Python em uma DAG, vamos simular a inferência do modelo em uma Task Python.
Inclua essa task no final da sua DAG como Task6 e veja que é possível executar a inferência dentro de uma Tarefa Python no Airflow. Explore o código para ler de arquivos externos, executar a inferência e gravar o resultado em um arquivo de saída.
Com este novo conceito uma DAG pode depender de um Dataset para ser iniciada e as tasks dentro de uma DAG podem gerar versões de Datasets. Assim é possível ter dependencia entre DAGs e um visão parcial de Data Lineage na interface de Dataset.
Vamos gerar duas novas DAGs de teste para visualizarmos esta dependencia:
Vamos usar o airflow standalone para fins didáticos, para implementacões em produções usar a
Inicialize o airflow com o docker compose e verifique a WebUi na url . Com a WebUi é possível acompanhar e operar as execução das DAGs. Explore a para o aprofundamento.
O exemplo a seguir traz a utilizacão do , operador do Airflow que executa um comando Bash nos Workers do Airflow.
Faça teste com a dependência entre as Tasks e os e veja o resultado na WebUi do Airflow.
Explore a de parametrizacão das Dags, altere o pipeline e veja o resultado na WebUI.
Vamos explorar o .
É possivel controlar dependencia entre DAGs via ou desde a versão 2.4, quando o conceito de Dataset foi criado, é possível ter o mesmo resultado com .