Ingenieros de datos: proyecto de ingeniería de datos paso a paso
si planea mejorar sus habilidades e involucrarse en algunos proyectos técnicos pesados, lo tengo, este artículo es para usted, los próximos también, voy a resaltar lo mejor para usted, como menciono, siempre, el buen conocimiento se distribuye aquí.

En este artículo, vamos a desglosar cómo construir una pila de datos usando la herramienta de administración de flujo de trabajo apache airflow , crear tableros con Dash plottly , recopilar métricas con Statsd y visualizar el rendimiento usando Prometheus y Grafana .
Todas las asignaciones especificadas anteriormente están progresando para conectarse entre sí utilizando docker compose . algunos de ustedes no tuvieron la oportunidad de trabajar con él, así que tomemos una breve definición.

Imagina que estás trabajando con muchos contenedores al mismo tiempo, cada uno de ellos tiene su trabajo específico, ¿vas a manejar cada uno de ellos por separado? CLARO QUE NO ! . Docker Compose es una herramienta que ayuda a superar este problema y manejar fácilmente varios contenedores a la vez.
Veo que se pregunta por qué comencé el artículo hablando de docker compose , pero está bien, voy a explicar por qué. Quiero que entiendan que es obligatorio pensar en los cimientos de cada proyecto de TI antes de comenzar a profundizar. Docker compose nos va a permitir poner en marcha todos los servicios necesarios para nuestro proyecto.
Echemos un vistazo a nuestro archivo de redacción de ventana acoplable ( docker-compose-LocalExecutor.yml ):
cada archivo docker-compose tiene atributos que debemos comprender:
- versión: versión de composición de docker
- imagen: imagen de la ventana acoplable que se extraerá del concentrador de la ventana acoplable
- depende_de: aquí debemos mencionar qué servicios están vinculados al servicio actual, por ejemplo, apache airflow necesita Postgres y Mysql para almacenar metadatos de los dags
- entorno: aquí definimos las variables de entorno del servicio, por ejemplo se va a utilizar POSTGRES_USER=airflow cuando iniciemos el servicio.
- comando: el primer comando bash que necesita para ejecutarse cada vez que se inicia el servicio
- volúmenes: la ubicación dentro de su contenedor que se montará en su sistema de archivos, por ejemplo, los datos transformados de las tuberías se almacenarán en un lugar de almacenamiento persistente
- puertos: son los medios desde donde sus contenedores usarían para comunicarse con otros servicios, por ejemplo, los datos se incorporarán a Statsd desde el flujo de aire a través del puerto 8125 usando el protocolo udp (ver la captura de pantalla a continuación).
- Inicie los servicios de la base de datos:
- extracción de datos y automatización con Apache airflow .
- tableros usando Dash plotly .
- monitorearlo usando 3 herramientas: Statsd, Prometheus, Grafana.
- fuente de datos :https://www.fahrrad.de/
- el nombre de la marca
- la categoría
- el nombre del modelo
- el precio
- la foto de la bicicleta
- PythonOperator: para el script de web scraping
- BashOperator: para definir trabajos de administración de Linux
- EmailOperator: para enviar correos electrónicos cuando finaliza la canalización


3.Iniciar Estadísticas:

4. Inicie Prometheus y Grafana:


Entonces, como podemos ver, todas estas definiciones están escritas en el mismo archivo y se iniciarán todas juntas con un simple comando para lograr el objetivo del proyecto.
El proyecto se divide en 3 pasos principales:

vamos a extraer:
Los scripts de raspado se automatizarán usando la herramienta más poderosa, apache airflow, pero si nunca la ha usado antes, le daré una breve descripción general de la herramienta.
Apache airflow es una herramienta de gestión de flujo de trabajo que tiene una gran cantidad de operadores que pueden ayudar a cualquier ingeniero de datos a diseñar y orquestar los trabajos de proyectos científicos de big data, por ejemplo, automatizar scripts de recopilación de datos. Los operadores utilizados en este proyecto son:
el Dag es una secuencia de tareas y cada tarea se define usando un operador
la tarea debe tener un lugar definido y ordenado (t1 >> t2: la tarea uno debe ejecutarse antes que la tarea 2)

Después de recopilar datos de la fuente (el sitio web que usa el método de raspado), ahora es el momento de obtener información de ellos, es por eso que hemos creado un tablero interactivo usando Dash plotly .
Dash plotly : es un marco para escribir aplicaciones web interactivas, escrito sobre Flask, Plotly. js y reaccionar. js.

En este momento, hagamos un poco de personal elegante, mientras se ejecuta el trabajo, generará métricas que deben monitorearse, estas métricas se enviarán desde el flujo de aire a través del puerto 8125 a Statsd usando el protocolo udp (puede verificar en el archivo de redacción de docker ), los datos de métricas no se pueden mostrar en una interfaz organizada si usamos solo statsd , por lo que nos apoyaremos en Prometheus y Grafana para lograr lo que buscamos.



todo el proceso se hace de esta manera:

Vídeo del proyecto:
Conclusión :
En este artículo, construimos una pila de datos completa: comenzando con la recopilación de datos usando un script de python, pasando a construir un tablero para extraer información útil de él, también monitoreando la canalización de datos y viendo el desempeño de las diferentes tareas. Espero que hayan disfrutado leyendo mi artículo y no duden en hacerme cualquier pregunta y espero escuchar sus ideas sobre el próximo artículo.
repositorio GIT:
https://github.com/chiheb08/data_enginnering_project