Инженеры по обработке данных: шаг за шагом проект по разработке данных
если вы планируете улучшить свои навыки и принять участие в некоторых тяжелых технических проектах, я вас понял, эта статья для вас, а также следующие, я собираюсь выделить для вас лучшее, как я уже упоминал, всегда, хорошие знания распространяются здесь.

В этой статье мы расскажем, как создать стек данных с помощью инструмента управления рабочим процессом apache airflow , построить информационные панели с помощью Dash plottly , собрать метрики с помощью Statsd и визуализировать производительность с помощью Prometheus и Grafana .
Все задачи, указанные выше, будут объединены вместе с помощью docker compose . у некоторых из вас не было возможности работать с ним, поэтому давайте дадим ему краткое определение.

Представьте, что вы работаете со многими контейнерами одновременно, у каждого из них есть своя специфическая задача, вы собираетесь обрабатывать каждый из них отдельно? КОНЕЧНО НЕТ ! . Docker Compose — это инструмент, помогающий преодолеть эту проблему и легко обрабатывать несколько контейнеров одновременно.
Я вижу, вы недоумеваете, почему я начал статью с обсуждения docker compose , но это нормально, я объясню почему. Я хочу, чтобы вы, ребята, поняли, что необходимо подумать об основах каждого ИТ-проекта, прежде чем начинать копать глубже. Docker compose позволит нам запустить все службы, необходимые для нашего проекта.
Давайте посмотрим на наш файл компоновки докеров ( docker-compose-LocalExecutor.yml ):
каждый файл docker-compose имеет атрибуты, которые нам нужно понять:
- версия : версия компоновки докера
- image : образ докера, который нужно извлечь из концентратора докеров
- depend_on: здесь нам нужно указать, какие сервисы связаны с текущим сервисом, например, apache airflow нуждается в Postgres и Mysql для хранения метаданных дагов.
- среда: здесь мы определяем переменные среды службы, например POSTGRES_USER = поток воздуха будет использоваться при запуске службы.
- command : первая команда bash, которую вам нужно запускать при каждом запуске службы
- тома: место внутри вашего контейнера, которое будет смонтировано в вашей файловой системе, например, преобразованные данные из конвейеров будут храниться в постоянном хранилище
- порты: это носитель, который ваши контейнеры будут использовать для связи с другими службами, например, данные будут загружаться в Statsd из воздушного потока через порт 8125 с использованием протокола udp (см. скриншот ниже).
- Запустите службы базы данных:
- парсинг данных и автоматизировать его с помощью Apache airflow .
- панели с использованием Dash plotly .
- контролировать его с помощью 3 инструментов: Statsd, Prometheus, Grafana.
- источник данных :https://www.fahrrad.de/
- торговая марка
- категория
- название модели
- Цена
- картина с велосипедом
- PythonOperator : для скрипта парсинга веб-страниц.
- BashOperator: для определения заданий администрирования Linux.
- EmailOperator : для отправки электронных писем после завершения конвейера.


3. Запустите статистику:

4. Запустите Prometheus и Grafana:


Итак, как мы видим, все эти определения записаны в один и тот же файл, и все они будут запущены вместе с помощью простой команды для достижения того, на что нацелен проект.
Проект разделен на 3 основных этапа:

мы собираемся извлечь:
Скрипты очистки будут автоматизированы с помощью самого мощного инструмента apache airflow, но если вы никогда не использовали его раньше, я дам краткий обзор инструмента.
Apache airflow — это инструмент управления рабочими процессами, в котором есть множество операторов, которые могут помочь любому инженеру по обработке и анализу данных разрабатывать и организовывать задания в проектах специалистов по работе с большими данными, например, автоматизировать сценарии сбора данных. операторы, используемые в этом проекте:
Даг представляет собой последовательность задач и каждая задача определяется с помощью одного оператора
задача должна иметь определенное и упорядоченное место (t1 >> t2: задача 1 должна выполняться перед задачей 2)

После сбора данных из источника (веб-сайт с использованием метода очистки) пришло время получить от него информацию, поэтому мы создали интерактивную панель инструментов с использованием Dash plotly .
Dash plotly : это фреймворк для написания интерактивных веб-приложений, написанных поверх Flask, Plotly. js и Реакт. js.

Прямо сейчас, давайте сделаем какой-нибудь модный персонал, пока работа выполняется, она будет генерировать метрики, которые следует отслеживать, эти метрики будут проталкиваться из воздушного потока через порт 8125 в Statsd с использованием протокола udp (вы можете проверить файл компоновки докера ), данные метрик не могут быть отображены в организованном интерфейсе, если мы используем только statsd, поэтому мы будем полагаться на Prometheus и Grafana для достижения того, что мы ищем.



весь процесс делается так:

Видео проекта:
Вывод :
В этой статье мы создали целый стек данных: начиная со сбора данных с помощью скрипта Python, переходя к созданию информационной панели для извлечения из нее полезной информации, а также отслеживая конвейер данных и наблюдая за производительностью различных задач. Надеюсь, вам понравилось читать мою статью, и вы можете задать мне любой вопрос, и я с нетерпением жду ваших идей о следующей статье.
репозиторий GIT:
https://github.com/chiheb08/data_enginnering_project