Como instalar o Apache Airflow

Neste artigo, vamos nos aprofundar em como instalar e configurar o Airflow no seu ambiente local. Esta abordagem também funcionará caso você precise ou queira instalar o Airflow em uma máquina virtual, tal como o Amazon EC2 ou Google Compute Engine.
0 Shares
0
0
0

Neste artigo, vamos nos aprofundar em como instalar e configurar o Apache Airflow localmente. Antes de tudo, é importante dizer que esta abordagem também funcionará caso você precise ou queira instalar o Airflow em uma máquina virtual, tal como o Amazon EC2 ou Google Compute Engine.

O Apache Airflow é uma plataforma open-source para orquestrar fluxos de dados. A plataforma permite aos usuários definir, agendar e monitorar fluxos de dados por meio de DAGs (directed acyclic graphs), tornando fácil gerenciar e automatizar tarefas relacionadas a processamento de dados, ETL (extração, transformação e carregamento de dados) e demais tarefas computacionais.

O Airflow oferece suporte para dependência de tarefas, gerenciamento de erros e logging, sendo a escolha mais popular para quem precisa gerenciar pipeline de dados e automatizar processos relacionados a dados de uma forma escalável e confiável.

instalar e configurar o Apache Airflow

Instalar o Apache Airflow

Para instalar o Apache Airflow, você precisa instalar sua biblioteca Python. Para isso, abra uma janela do terminal e digite:

pip3 install apache-airflow

Depois, você precisará definir um diretório inicial (ROOT), que nada mais é que um local no seu computador em que você queira que o Airflow funcione. Dito isso, crie uma pasta com o nome do seu projeto (ex: airflow_project).

Agora, volte ao terminal, navegue até a pasta que você acabou de criar e digite o seguinte comando:


export AIRFLOW_HOME="$(pwd)"

Este comando irá configurar a pasta que você acabou de criar como a pasta inicial do Airflow (ROOT). Isto significa dizer que o Airflow só será capaz de identificar e trabalhar em arquivos que estejam dentro desta pasta e subpastas.

Iniciar o banco de dados do Apache Airflow

Para continuar o processo de instalar o Apache Airflow, precisamos de um banco de dados para gerenciar os workflows. O Apache Airflow suporta os seguintes bancos de dados: SQLite, MySQL e PostgreSQL. Por padrão, o Apache Airflow utiliza o SQLite, que comumente utilizado com objetivo de rodar testes e desenvolver localmente.

Embora o SQLite não seja recomendado para sustentar um ambiente de produção, pode ser uma opção inicial para testar se tudo está funcionando. Posteriormente, é aconselhável migrar o banco de dados para PostgreSQL ou MySQL.

Por outro lado, se a intenção for utilizar o Airflow de maneira oficial na empresa, minha sugestão seria começar diretamente com o PostgreSQL ou MySQL. Se, porém, o objetivo for apenas executar processos localmente ou utilizá-lo em um projeto ou pesquisa, o SQLite atenderá adequadamente às suas necessidades.

Para fins deste artigo, vamos cubrir SQLite e PostgreSQL.

SQLite

Iniciar um banco de dados do SQLite é bem direto ao ponto. Tudo que você precisa fazer é ir até o terminal (na pasta inicial do projeto, ou pasta ROOT) e digitar:

airflow db init
airflow standalone

Após executar esses comandos, o Airflow iniciará uma base de dados SQLite e criará um usuário para permitir o acesso à interface gráfica. Ao concluir esse processo, o sistema fornecerá um nome de usuário, senha e uma URL HTTP, que indica o local onde o Airflow está sendo executado.

Você pode acessar a UI digitando http://localhost:8080/ no seu browser de escolha.

O login padrão no Airflow é admin e a senha normalmente estará armazenada no arquivo: standalone_admin_password.txt.

Se este processo de alguma forma não fiuncionar, o principal motivo é que a variável AIRFLOW_HOME não foi definida corretamente. Para garantir que você esteja rodando os comandos na pasta certa, confira se a variável AIRFLOW_HOME está apontando para o caminho certo. Para fazer isso, utilize o comando echo $AIRFLOW_HOME

Se, por algum motivo você precisar da senha do banco de dados, o Airflow cria automaticamente um arquivo chamado standalone_admin_password.txt que contém a senha.

PostgreSQL

Para configurar um banco de dados PostgreSQL, você precisa de instalar o Postgres na sua máquina. Você pode instalá-lo por meio do Homebrew (que é um gerenciador de pacotes no terminal) ou por meio do site oficial. Para fins deste artigo, vamos seguir com a instalação via Homebrew.

Antes de instalar o PostgreSQL, você precisa garantir que o Homebrew esteja atualizado. Para isso, digite no terminal:

brew update

Depois de atualizar o Homebrew, você pode rodar o seguinte comando para instalar o Postgres:

brew install postgresql

Agora, o próximo passo será iniciar o serviço. Você pode fazer isso digitando o seguinte comando:

services start postgresql

Configurando o server do banco de dados Postgres


Após iniciar o servidor do PostgreSQL, o passo seguinte é configurá-lo para uso. Em seguida, procederemos à criação de um usuário ROOT, conferindo-lhe privilégios de administrador no banco de dados do servidor.

Garanta que o serviço esteja rodando e digite o seguinte comando no terminal:

psql postgres

Este comando abrirá a interface do Postgres no terminal e permitirá que você rode consultas SQL diretamente de lá.

Agora, precisamos criar a banco de dados do Airflow a um usuário que terá privilégios de administrador nesta banco de dados. Para isto, digite os seguintes comandos (altere os comandos entre [colchetes] para os nomes de sua preferência:

CREATE DATABASE airflow; 
CREATE USER [INSERT YOUR USERNAME] WITH LOGIN PASSWORD [INSERT YOUR PASSWORD]
ALTER ROLE [YOUR USERNAME] CREATEDB; 
ALTER ROLE [YOUR USERNAME] SUPERUSER; 
GRANT ALL PRIVILEGES ON DATABASE airflow TO [YOUR USERNAME]

Iniciar o banco de dados do Apache Airflow

Agora que temos nossa banco de dados e usuários configurados, vamos iniciar a banco de dados com o seguinte comando no terminal:

airflow db init

Agora vamos criar um usuário do Airflow. Este será o usuário responsável por rodar os processos dentro do Airflow, o que é diferente do usuário do banco de dados. Para criá-lo, basta rodar o seguinte comando no terminal:

airflow users create \
    --username admin \
    --password admin \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email [INSERT YOUR EMAIL]

Inicie o webserver:

airflow webserver -D

A flag ‘-D’ indica daemon mode, que significa que os logs gerados pelo webserver do Airflow não ficarão aparecendo na janela do seu terminal, te permitindo rodar outros comandos livremente.

Iniciar o scheduler

Diferentemente do modo standalone, o Airflow precisa que tanto o webserver quanto o scheduler estejam rodando. Dito isso, você pode abrir uma nova janela do terminal para rodar o scheduler. Para iniciar o scheduler, utilize os comandos abaixo.

** Você precisa estar na pasta inicial do projeto (ROOT) para os comandos abaixo funcionarem.

export AIRFLOW_HOME="$(pwd)"
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
airflow scheduler

Para rodar o scheduler no modo daemon, você precisará rodar os seguintes comandos no terminal:

rm airflow-scheduler.err
rm airflow-scheduler.pid
airflow scheduler -D

Depois de tudo isso, você vai abrir seu browser, digitar o diretório abaixo e logar com seu nome de usuário e senha. A partir daí, você já estará com tudo pronto para começar a escrever suas primeiras DAGs. Por padrão, o diretório estará configurado para rodar em:

http://localhost:8080/

Se isto, de alguma forma, não funcionar, a causa principal é a de que o PATH da variável AIRFLOW_HOME não foi configurado. Desta forma, garanta que a variável AIRFLOW_HOME sempre aponte para o diretório inicial do projeto (ROOT).

Se o PATH da variável AIRFLOW_HOME estiver configurado e ainda sim não funcionar, você precisa garantir que a variável OBJC_DISABLE_INITIALIZE_FORK_SAFETY está configurada na mesma janela do terminal em que o Airflow Scheduler estiver rodando.

Comandos úteis

Utilize o comando abaixo para verificar quais processos estão ativos em uma porta específica, tal como a porta 8080, que é ocupada pelo webserver do Aifrlow ou a porta 8793 que é ocupada pelo Airflow Scheduler.

lsof -i TCP:8080
lsof -i TCP:8793

Assim como o comando acima, você pode utilizar o comando a seguir para eliminar um processo que esteja rodando em uma porta específica, como por exemplo, eliminar o processo do Airflow webserver ou o processo do Airflow scheduler.

fuser -k 8080/tcp

Estes dois comandos acima são muito úteis e servem de suporte no seu dia a dia caso você tenha processos de pipelines de dados no Airflow que não deveriam estar rodando naquele momento e você precisa que o processo pare imediatamente.

0 Shares
Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

You May Also Like

DataThe role of an Analytics Engineer

Analytics engineers are responsible for building and maintaining data pipelines, which are essential for orchestrating the flow of data from various sources to destinations in a format that is readily accessible for decision-making.