Saltar al contenido principal

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

  1. Acceso a AWS (Amazon Web Services) con permisos para crear una máquina virtual.
Sugerencia

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.

  1. Un cliente SSH.
Sugerencia

Si está en una máquina Mac o Linux, estas herramientas ya están incluidas. Si está en Windows, considere la posibilidad de usar PuTTY o MobaXterm.

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

  1. Vaya a la consola de AWS EC2 y haga clic en Launch instance.
  2. Seleccione Red Hat para la imagen del sistema operativo.
  3. Seleccione t2.2xlarge como tipo de instancia.
  4. Cree un nuevo par de claves o utilice uno existente.
  5. 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.
  6. Asigne 100 GB de almacenamiento.

Instalar Python

  1. ssh a la máquina mediante el usuario ec2-user.

  2. Compruebe si Python está instalado (debe ser Python 3.7 o superior). Escriba python o python3 en la línea de comandos.

  3. 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 escribiendo y y pulsando Entrar.

Crear un entorno de Airflow

  1. Cree la estructura del directorio Airflow (desde el directorio de inicio del usuario ec2 /home/ec2-user)
  1. Utilice su herramienta de transferencia de archivos preferida (scp, PuTTY, MobaXterm o similar) para cargar el archivo airflow.cfg en el directorio airflow/config.

Instalar Docker

Docker es una herramienta de contenedorización que nos permite instalar Airflow en un entorno en contenedores.

Nota

Los pasos deben ejecutarse en el directorio airflow.

  1. Desinstale podman (herramienta de contenedorización RHEL)
  1. Instalar las utilidades yum
  1. Agregue Docker al repositorio de yum.
  1. Instalar Docker.
  1. 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.
  1. 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

  1. Cargue los archivos Dockerfile y Dockerfile a la máquina virtual y guárdelos en el directorio airflow.
Sugerencia

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

  1. Instale docker-compose (necesario para ejecutar el archivo yaml).
Nota

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.

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

Nota

Estos pasos configuran un proyecto dbt de muestra. La herramienta dbt será instalada en los contenedores más adelante por docker-compose.

  1. Instale git:
  1. Obtenga el proyecto dbt de muestra de jaffle shop:
Nota

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.

  1. Cree los usuarios/bases de datos airflowtest y jaffle_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 como dbc, luego ejecute los comandos (cambie las contraseñas si es necesario):
  1. Cree el directorio de configuración de dbt:
  1. Copie profiles.yml en el directorio .dbt.

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

  1. Ejecute el script de creación del entorno de Docker en el directorio airflow donde Dockerfile y docker-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.

  1. 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:

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

  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

  1. Copie los archivos airflow_dbt_integration.py, db_test_example_dag.py, discover_dag.py, variables.json en /home/ec2-user/airflow/dags.
  2. 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 a http://<VM_IP_ADDRESS>:4000/)
Nota

[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 archivo variables.json. El archivo debe importarse a Airflow. Ocurrirá en pasos posteriores.
  1. 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.

  2. 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 Menú desplegable de administración de Airflow
  • Haga clic en Choose File, luego seleccione variable.json en su explorador de archivos y haga clic en Import Variables Menú desplegable de administración de Airflow
  • Edite las variables para que coincidan con su entorno.
  1. 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

Nota

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.

También de interés