Neste tutorial, eu mostro todo o caminho para instalar o R e o Airflow na Nuvem
Este tutorial mostra como instalar e configurar o Airflow na nuvem para colocar scripts do R em produção. Ele assume que você já tem o R rodando na nuvem. Se você não tem, há outro tutorial que você pode usar. Clique aqui.
Como no tutorial sobre o R na nuvem, este aqui é algo em permanente construção. Conforme vou ganhando experiência e aperfeiçoando a ferramenta, atualizo o manual para que ele fique cada vez melhor.
Para seguir com este roteiro, você já terá:
1 - Alugado uma máquina na nuvem com Ubuntu. Eu recomendo, pelo preço, o Contabo.
2 - Instalado o R na nuvem. Siga o roteiro que indiquei acima.
3 - Instalado o Nginx. Siga o reteiro que indiquei acima.
4 - Configurado o SSL. Siga o roteiro que indiquei acima.
Para este roteiro, eu usei Python 3.10 e Miniconda3. Seguramente, você terá esta ou outra versão superior do Python instalada. Com relação ao Miniconda3, se você é usuário do R, eu recomendo porque é o que a comunidade do Posit utiliza para trabalhar com Python do R. No entanto, se preferir usar PIP com virtualenv or venv, fique à vontade.
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ bash Miniconda3-latest-Linux-x86_64.sh
O airflow precisa de um banco SQL para operar. Ele vem com o SQLite. No entanto, eu percebo que a comunidade tem preferência pelo PostgreSQL. Sugiro que você instale o Postgres antes de proesseguir. Se quiser, neste tutorial, eu mostro como instalar o PostgreSQL.
Você precisa criar um usuário para o Airflow. Este usuário terá de ser sudoer.
$ adduser airflow ### Você pode dar outro nome se quiser.
$ chmod -AG sudo airflow
# addgroup airflow
$ usermod -aG airflow jose
Além disso, é importante você remover a necessidade de usar senha quando der sudo visudo
$ visudo
e adicione a seguinte diretiva no final do arquivo. Lembre-se que deve ser no final do arquivo e o usuário deve ser aquele que você criou:
airflow ALL=(ALL) NOPASSWD: ALL
Antes de tudo, crie um diretório para o airflow e autorize o usuário recêm criado a usá-lo. Eu vou criar dentro do /opt porque este é próprio para receber pragramas add-on ou seja, programas que não fazem parte do sistema e são, portanto, opcionais.
$ mkdir /opt/airflow
$ chown -R :airflow /opt/airflow
$ chmod g+wrx /opt/airflow
Antes de instalar o airflow, você deve definir uma variável de ambiente, informando o caminho para o diretório onde o airflow será instalado.
$ export AIRFLOW_HOME=/opt/airflow
Em seguida, crie um ambiente para instalar o Airflow:
$ conda create -n airflow_env python=3.10
Ative o ambiente
$ conda activate airflow_env
Instale o airflow. Note que, ao instalar o airflow, você pode informar outras dependências que mais tarde irá usar. No caso abaixo, eu estou instalando o airflow juntamente com os pacotes para conexão com o s3 e PostgreSQL. Basicamente, o boto, o psycopg2 e o SQLAlchemy serão também instalados.
$ conda install -c conda-forge airflow[s3,postgres]
Conecte-se ao banco como superuser e proceda à criação do usário.
create role airflow_admin;
create user airflow_user with password 'senha';
grant airflow_admin with airflow_user;
grant airflow_admin with jose;
Crie o banco de dados
create database airflow_db owner airflow_admin;
grant all on schema public to airflow_admin;
Não se esqueça de que, o acesso ao banco deve estar devidamente autorizado no arquivo pg_hba.conf
do PostgreSQL.
Verifique se está tudo certo,i.e, conectando-se com o usário airflow_user ao banco airflow_db.
Quando instalei pela primeira vez o airflow e conectei-o ao PostgreSQL, notei uma multiplicidade de sessões abertas com o mesmo usário após fazer alguns testes com dags. Uma característica do Airflow é gerar múltiplas conexões do mesmo usuário ao banco airflow_bd (ou o nome que você deu). Isso pode sobrecarregar os recursos disponíveis do seu banco, especialmente memória.
Para prevenir esse tipo de problema, é recomendável usar o Pgbouncer, o qual funciona como intermediário entre a aplicação (airflow) e o banco (PostgreSQL) de modo a agrupar as conexões de um mesmo usuário ao mesmo banco em uma única sessão. Dessa forma, é recomendável o configurar para acesso ao PosgreSQL.
Instale o PGBouncer:
$ apt update
$ apt install pgbouncer
Depois disso, altere arquivo /etc/pgbouncer/pgbouncer.ini
e adicione a seguinte diretiva no local indicado:
$ [databases]
postgresql+psycopg2://<user>:<password>@<host>/<db>
isso funcionou: https://www.scaleway.com/en/docs/tutorials/install-pgbouncer/
pgbouncer.ini userlist.txt
listen_addr=*
airflow users create \
--username jose \
--firstname 'José' \
--lastname 'de Jesus Filho' \
--role Admin \
--email jose@consudata.com.br
Atualize as permissões. Vá para o shell, reative o embiente e rode o seguinte:
airflow sync-perm
1 - Crie projetos dentro da pasta airflow, e.g,. /opt/airflow/projetos/projeto1/
, com o usuário airflow. Dessa forma, você evita dor de cabeça com permissões.
For attribution, please cite this work as
Filho (2023, June 26). Jurimetria: R em produção com Airflow. Retrieved from https://direitoemdados.consudata.com.br/posts/2023-06-26-airflower/
BibTeX citation
@misc{filho2023r, author = {Filho, José de Jesus}, title = {Jurimetria: R em produção com Airflow}, url = {https://direitoemdados.consudata.com.br/posts/2023-06-26-airflower/}, year = {2023} }