5 minutos de leitura
Este artigo é a segunda parte da série “Orquestrando pipelines com o Apache Airflow”, e tem como objetivo acompanhar o leitor no processo de instalação e configuração deste orquestrador. Na primeira parte, conheça o que é (e o que não é) o Airflow, uma ferramenta open source que auxilia nos procedimentos repetitivos em projetos de dados. Você pode ler aqui: Maestro de pipelines de tarefas agendadas.
Como apresentado no artigo anterior, o Airflow, apesar de extremamente útil e versátil, pode acabar sendo nada amigável a um novo usuário para sua adequada instalação e configuração, além de poder apresentar uma série de comportamentos anômalos principalmente se configurado erroneamente. Por esse motivo, os capítulos seguintes apresentam um passo a passo de como fazer essa instalação e permitir que seu orquestrador execute tarefas em paralelo sem (muita) dor de cabeça.
Assim como em um grande concerto, o “palco” acaba sendo um fator muito importante para o resultado final da apresentação. No caso do Airflow, novamente a vida imita a arte, fazendo com que seja necessário explicitar que os passos descritos nesse artigo tenham tomado como base uma combinação específica de sistema operacional, versionamentos e dependências. Sendo assim, cabe ao usuário adaptar estas instruções conforme sua realidade, podendo até mesmo fazer uso de uma máquina virtual para acompanhar o processo em condições mais próximas das que serão apresentadas.
A máquina utilizada para a instalação e configuração do Airflow possui a seguintes características:
O processo de instalação será apresentado de forma sequencial, portanto, caso encontre algum erro no meio do caminho, recomenda-se a revisão dos pontos anteriores antes de prosseguir para uma investigação minuciosa do assunto.
sudo apt-get update
sudo apt-get install build-essential
python3 -m venv <nome_do_seu_ambiente>
source <nome_do_seu_ambiente>/bin/activate
sudo apt-get install python3-dev
pip3 install wheel
pip3 install apache-airflow==1.10.14 –constraint https://raw.githubusercontent.com/apache/airflow/constraints-1.10.14/constraints-3.8.txt
É importante ressaltar que o comando anterior irá instalar a versão 1.10.14 do Airflow, assim como versões de dependências que sejam compatíveis com o interpretador Python 3.8, portanto, caso utilize versões diferentes das apresentadas nos requisitos, altere esses valores conforme sua necessidade. Caso ocorram problemas de instalação, verifique o arquivo constraints-3.8.txt e avalie a possibilidade de troca de versionamento da dependência que apresente erro.
airflow info
airflow db init
Por padrão, o Airflow é instalado com as configurações necessárias para executar tarefas de forma sequencial, utilizando o SQLite como interface de banco de dados. Algumas configurações adicionais ainda são necessárias para permitir a correta utilização do orquestrador (com o uso de um Executor capaz de gerenciar múltiplas tarefas simultaneamente), que serão apresentadas de forma sequencial nos itens a seguir:
# Abra o arquivo airflow.cfg (se precisar, verifique com o comando airflow info a localização do mesmo)
# Procure pela linha que contém: executor = SequentialExecutor
# Altere para: executor = LocalExecutor
# Em um terminal, execute os seguintes comandos:
sudo -u postgres psqlpostgres=# ALTER USER <seu_usuario> PASSWORD ‘<sua_senha>’;
postgres=# \q
#Em um terminal, dentro do seu ambiente python gerado anteriormente (venv), execute:
pip3 install ‘apache-airflow[postgres]’
# Abra o arquivo airflow.cfg (se precisar, verifique com o comando airflow info a localização do mesmo)
# Em um terminal, dentro do seu ambiente python gerado anteriormente (venv), execute:
airflow db check
Se tudo estiver funcionando, será possível verificar uma mensagem do tipo INFO contendo a frase “Connection Successful”, indicando que o Airflow agora é capaz de se conectar ao Postgres.
# Em um terminal, dentro do seu ambiente python gerado anteriormente (venv), execute:
airflow db init
airflow users create -u <usuario_airflow> -p <senha_airflow> -f <seu_primeiro_nome> -l <seu_ultimo_nome> -r Admin
# Em dois terminais, dentro do seu ambiente python gerado anteriormente (venv), execute:
airflow db init (no primeiro terminal)
airflow webserver (no primeiro terminal)
airflow scheduler (no segundo terminal)
Se tudo ocorreu bem, deve ser possível acessar a interface gráfica do Airflow através do endereço http://localhost:8080, onde será possível fazer o login com o usuário criado e então ter acesso a todos os recursos disponíveis na interface de usuário do Web Server. Agora é possível executar múltiplas tarefas paralelamente em uma mesma máquina, já que o LocalExecutor faz parte do sistema Scheduler. Por fim, é extremamente importante verificar a documentação oficial da ferramenta para avaliar possíveis configurações adicionais que podem ser feitas, otimizando ainda mais este orquestrador para inúmeras formas de trabalho.
Certo, imagino que esteja se perguntando “o que fazer” com o Airflow agora que o mesmo está instalado e executando da forma adequada… O último passo para orquestrar suas tarefas é entender como defini-las dentro do universo de DAGs.
O próximo artigo, A hora do show: criando seu primeiro DAG, abordará o tema de criação e boas práticas ao desenvolver DAGs para Airflow, além da demonstração do funcionamento de tarefas em paralelo e alguns outros benefícios que a interface do usuário nos proporciona.