Escrito por Yan Cescon Haeffner,

5 minutos de leitura

Organizando o palco: instalando e configurando o Apache Airflow localmente

Apesar de extremamente versátil, o Airflow pode acabar sendo nada amigável a um novo usuário. Veja como instalar seu orquestrador corretamente.

Compartilhe este post:

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.

Ambientação

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:

  • Sistema operacional: Pop!_OS 20.04 LTS (Linux)
  • Interpretador Python: como o Airflow é uma ferramenta escrita em python, faz-se necessário utilizar um interpretador para sua execução. Para esse artigo foi utilizado o Python 3.8.5, porém é possível também utilizar uma versão anterior (como o Python 2.7), desde que sejam feitas as devidas modificações.
  • Gerenciador de Pacotes Python: para não ser necessário instalar manualmente inúmeras dependências que o orquestrador necessita, é possível (e fortemente recomendado) utilizar um gerenciador de pacotes python. Neste artigo foi utilizado o pip v20.0.2; caso seja instalada uma outra versão desse gerenciador, talvez seja necessário fazer algumas modificações no versionamento das dependências que serão instaladas pelo Airflow (que serão apresentadas em breve).
  • Sistema de Gerenciamento de Banco de Dados: para o banco de dados de metadados do Airflow, será utilizado o PostgreSQL v12, possibilitando assim o uso do LocalExecutor para gerenciamento de tarefas em paralelo.

 

Instalação

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.

  • Primeiramente, atualize seu sistema operacional e instale o build-essential;

sudo apt-get update
sudo apt-get install build-essential

python3 -m venv <nome_do_seu_ambiente>
source <nome_do_seu_ambiente>/bin/activate

  • Instale algumas ferramentas adicionais;

sudo apt-get install python3-dev
pip3 install wheel

  • Instale o Airflow e suas dependências;

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.

  • Verifique se o Airflow foi instalado corretamente e inicialize-o:

airflow info
airflow db init

 

Configuração

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:

  • Mude seu Executor para o LocalExecutor;

# 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

  • Configure um usuário no PostgreSQL;

# Em um terminal, execute os seguintes comandos:
sudo -u postgres psqlpostgres=# ALTER USER <seu_usuario> PASSWORD ‘<sua_senha>’;
postgres=# \q

  • Instale as dependências Postgres para o Airflow;

#Em um terminal, dentro do seu ambiente python gerado anteriormente (venv), execute:
pip3 install ‘apache-airflow[postgres]’

  • Mude as configurações do Metadata DB do Airflow;

# Abra o arquivo airflow.cfg (se precisar, verifique com o comando airflow info a localização do mesmo)
# Procure pela linha que contém: sql_alchemy_conn = sqlite:///…/airflow.db
# Altere para: sql_alchemy_conn = postgresql+psycopg2://<seu_usuario>:<sua_senha>@localhost/postgres

  • Verifique se é possível conectar com as novas configurações do DB;

# 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.

  • Inicialize o Airflow e crie um novo usuário;

# 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

  • Aplique as modificações e execute o Web Server e o Scheduler.

# 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)

 

Conclusão

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.

 

Ainda aqui?

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.

Compartilhe este post: