Ejecutar flujos de trabajo de Airflow que utilizan dbt con Teradata Vantage
Información general
Este tutorial muestra cómo instalar Airflow en una máquina virtual AWS EC2, configurar el flujo de trabajo para usar dbt y ejecutarlo en una base de datos Teradata Vantage. Airflow es una herramienta de programación de tareas que normalmente se utiliza para crear canales de datos para procesar y cargar datos. En este ejemplo, pasamos por el proceso de instalación de Airflow, que crea un entorno Airflow basado en Docker. Una vez instalado Airflow, ejecutamos varios ejemplos de Airflow DAG (Direct Aciclic Graph, o simplemente flujo de trabajo) que cargan datos en una base de datos de Teradata Vantage.
Requisitos previos
- Acceso a AWS (Amazon Web Services) con permisos para crear una máquina virtual.
Este tutorial se puede ajustar a otras plataformas informáticas o incluso en una máquina básica siempre que tenga una capacidad informática y de almacenamiento comparable a la máquina mencionada en este documento (t2.2xlarge EC2 en AWS con aproximadamente 100 GB de almacenamiento) y esté conectada a Internet. Si decide utilizar una plataforma informática diferente, será necesario modificar algunos pasos del tutorial.
- Un cliente SSH.
- Acceda a una base de datos de Teradata Vantage. Si no tiene acceso a Teradata Vantage, explore Vantage Express, una edición gratuita para desarrolladores.
Instalar y ejecutar Airflow
Crear una máquina virtual
- Vaya a la consola de AWS EC2 y haga clic en
Launch instance
. - Seleccione
Red Hat
para la imagen del sistema operativo. - Seleccione
t2.2xlarge
como tipo de instancia. - Cree un nuevo par de claves o utilice uno existente.
- Aplique la configuración de red que le permitirá ssh al servidor y el servidor tendrá conectividad saliente a Internet. Por lo general, bastará con aplicar la configuración predeterminada.
- Asigne 100 GB de almacenamiento.
Instalar Python
-
ssh a la máquina mediante el usuario
ec2-user
. -
Compruebe si Python está instalado (debe ser Python 3.7 o superior). Escriba
python
opython3
en la línea de comandos. -
Si Python no está instalado (aparece el mensaje
command not found
), ejecute los siguientes comandos para instalarlo. Es posible que los comandos requieran que confirme la instalación escribiendoy
y pulsando Entrar.
Crear un entorno de Airflow
- Cree la estructura del directorio Airflow (desde el directorio de inicio del usuario ec2 /home/ec2-user)
- Utilice su herramienta de transferencia de archivos preferida (
scp
,PuTTY
,MobaXterm
o similar) para cargar el archivo airflow.cfg en el directorioairflow/config
.
Instalar Docker
Docker es una herramienta de contenedorización que nos permite instalar Airflow en un entorno en contenedores.
Los pasos deben ejecutarse en el directorio airflow
.
- Desinstale podman (herramienta de contenedorización RHEL)
- Instalar las utilidades yum
- Agregue Docker al repositorio de yum.
- Instalar Docker.
- Inicie Docker como servicio. El primer comando ejecuta el servicio Docker automáticamente la próxima vez que el sistema se inicie. El segundo comando inicia Docker ahora.
- Compruebe si Docker está instalado correctamente. Este comando debería devolver una lista vacía de contenedores (ya que aún no hemos iniciado ningún contenedor):
Instalar docker-compose
y archivos de configuración del entorno Docker
- Cargue los archivos Dockerfile y Dockerfile a la máquina virtual y guárdelos en el directorio
airflow
.
Qué hacen docker-compose.yaml
y Dockerfile
Los archivos docker-compose.yaml
y Dockerfile
son necesarios para crear el entorno durante la instalación. El archivo docker-compose.yaml
descarga e instala el contenedor Docker de Airflow. El contenedor incluye la interfaz de usuario web, una base de datos Postgres para metadatos, el programador, 3 trabajadores (por lo que se pueden ejecutar 3 tareas en paralelo), el activador y el servidor web nginx para mostrar los documentos producidos por dbt
. Además, los directorios de host se montan en contenedores y se realizan otros procesos de instalación. Dockerfile
instalará los paquetes necesarios en cada contenedor.
Si desea obtener más información sobre qué hacen los archivos docker-compose.yaml
y Dockerfile
, examínelos. Hay comentarios que aclaran qué está instalado y por qué.
- Instale docker-compose (necesario para ejecutar el archivo yaml).
Las instrucciones se basan en la versión 1.29.2. Visite el sitio https://github.com/docker/compose/releases para obtener la última versión y actualice el siguiente comando según sea necesario.
- Pruebe su instalación de Docker-Compose. El comando debería devolver la versión de Docker-Compose, por ejemplo
docker-compose version 1.29.2, build 5becea4c
:
Instalar un proyecto dbt de prueba
Estos pasos configuran un proyecto dbt de muestra. La herramienta dbt
será instalada en los contenedores más adelante por docker-compose
.
- Instale git:
- Obtenga el proyecto dbt de muestra de jaffle shop:
Los directorios dbt se crearán en el directorio de inicio (no en airflow
). El directorio de inicio en nuestro ejemplo es /home/ec2-user
.
- Cree los usuarios/bases de datos
airflowtest
yjaffle_shop
en su base de datos Teradata utilizando su herramienta de base de datos preferida (Teradata Studio Express,bteq
o similar). Inicie sesión en la base de datos comodbc
, luego ejecute los comandos (cambie las contraseñas si es necesario):
- Cree el directorio de configuración de dbt:
-
Copie profiles.yml en el directorio
.dbt
. -
Edite el archivo para que corresponda a la configuración de su base de datos Teradata. Como mínimo, deberá cambiar el host, el usuario y la contraseña. Utilice las credenciales de usuario de
jaffle_shop
que configuró en el paso 3.
Crear el entorno Airflow en Docker
- Ejecute el script de creación del entorno de Docker en el directorio
airflow
dondeDockerfile
ydocker-compose.yaml
:
Esto puede tardar entre 5 y 10 minutos; cuando se complete la instalación, debería ver en la pantalla un mensaje similar a este:
Esto significa que el servidor web Airflow está listo para aceptar llamadas.
- Ahora Airflow debería estar activo. La sesión de terminal que estábamos usando durante la instalación se usará para mostrar mensajes de registro, por lo que se recomienda abrir otra sesión de terminal para pasos posteriores. Para verificar el tipo de instalación de Airflow:
El resultado debería ser algo como:
- OPCIONAL: Si desea eliminar la instalación de Docker (por ejemplo, para actualizar los archivos docker-compose.yaml y Dockerfile y recrear un entorno diferente), el comando es (desde el directorio de Airflow donde se encuentran estos archivos):
Una vez que la pila esté inactiva, actualice los archivos de configuración y reinicie ejecutando el comando en el paso 1.
- Para probar si la interfaz de usuario web de Airflow funciona, escriba las siguientes URL en su navegador. Reemplace
<VM_IP_ADDRESS>
con la dirección IP externa de la máquina virtual:
- UI de DAG:
http://<YOUR_IP_ADDRESS>:8080/home
- nombre de usuario: airflow / contraseña: airflow - Interfaz de usuario de Flower Airflow (control de trabajadores):
http://<YOUR_IP_ADDRESS>:5555/
Ejecute un DAG de Airflow
- Copie los archivos airflow_dbt_integration.py, db_test_example_dag.py, discover_dag.py, variables.json en
/home/ec2-user/airflow/dags
. - Examine los archivos:
airflow_dbt_integration.py
- un ejemplo simple de Teradata SQL que crea algunas tablas y ejecuta consultas.db_test_example_dag.py
- ejecuta un ejemplo de dbt (es decir, integración de dbt y airflow con una base de datos Teradata). En este ejemplo se crea, se carga un modelo de datos ficticio de jaffle_shop y se genera la documentación para este proyecto (puede verla apuntando su navegador ahttp://<VM_IP_ADDRESS>:4000/
)
[Ajuste db_test_example_dag.py
]
db_test_example_dag.py
debe actualizarse para que la dirección IP de la base de datos de Teradata apunte a su base de datos.
discover_dag.py
- un ejemplo sobre cómo cargar varios tipos de archivos de datos (CSV, Parquet, JSON). El archivo de código fuente contiene comentarios que explican qué hace el programa y cómo usarlo. Este ejemplo se basa en el archivovariables.json
. El archivo debe importarse a Airflow. Ocurrirá en pasos posteriores.
-
Espere unos minutos hasta que la herramienta de airflow recoja estos archivos dag. Una vez recogidos, aparecerán en la lista de dags en la página de inicio de Airflow.
-
Importe el archivo
variables.json
como un archivo variable en Airflow:
- Haga clic en el elemento de menú
Admin -> Variables
para ir a la página Variables - Haga clic en
Choose File
, luego seleccionevariable.json
en su explorador de archivos y haga clic enImport Variables
- Edite las variables para que coincidan con su entorno.
- Ejecute dags desde la interfaz de usuario y verifique los registros.
Resumen
Este tutorial tiene como objetivo proporcionar un ejercicio práctico sobre cómo instalar un entorno Airflow en un servidor Linux y cómo utilizar Airflow para interactuar con una base de datos Teradata Vantage. Se proporciona un ejemplo adicional sobre cómo integrar Airflow y la herramienta de modelado y mantenimiento de datos dbt para crear y cargar una base de datos Teradata Vantage.
Lectura adicional
Si tiene alguna pregunta o necesita más ayuda, visite nuestro foro de la comunidad donde podrá obtener ayuda e interactuar con otros miembros de la comunidad.