Эта статья будет долгой, но ее стоит прочитать. Я хотел бы сказать: “Any Machine Learning project is 80% data engineering and 20% Model Engineering”.
Следовательно, если вы посмотрите мое портфолио статей, я много раз концентрировался на различных шаблонах конвейеров данных, которые будут способствовать инженерии данных, эта статья также попадает в эту категорию. Мы сосредоточимся на построении конвейера больших данных и увидим практическую реализацию этого E2E.
Основные этапы разработки данных
Инжиниринг данных включает в себя ряд фундаментальных этапов, которые преобразуют необработанные данные в полезную информацию посредством структурированного процесса. Вот этапы, которые вы упомянули:
- Необработанные данные. Это начальный этап, на котором данные собираются из различных источников, таких как датчики, базы данных, внешние API, журналы и т. д. Необработанные данные могут быть в различных форматах, таких как CSV, JSON, XML, или даже в неструктурированных данных, таких как текст, изображения и видео. Качество и целостность необработанных данных имеют решающее значение, поскольку любые проблемы на этом этапе могут распространиться по всему конвейеру данных.
- Накопление данных. На этом этапе собранные необработанные данные накапливаются и сохраняются в централизованном хранилище. Этот репозиторий может быть озером данных или хранилищем данных. Данные часто разделены и организованы для облегчения эффективного хранения и поиска. Надлежащие методы управления данными используются для обеспечения согласованности, долговечности и доступности данных.
- Обработка данных. Обработка данных включает очистку, преобразование и обогащение накопленных данных. Очистка предполагает удаление несоответствий, неточностей и дубликатов. Трансформация включает в себя преобразование данных в общий формат или структуру для лучшего анализа. Обогащение может включать в себя дополнение данных дополнительной информацией из внешних источников. На этом этапе обычно используются такие инструменты, как конвейеры Apache Spark, Apache Flink и ETL (извлечение, преобразование, загрузка).
- Разделение данных. После обработки данные могут быть разделены на разные категории или подмножества на основе определенных критериев. Например, данные могут быть сегментированы по периодам времени, географическим регионам, демографическим характеристикам пользователей или категориям продуктов. Сегрегация обеспечивает более целенаправленный анализ и упрощает управление подмножествами данных.
- Визуализация данных. После того, как данные обработаны и сегментированы, важно визуализировать их осмысленным образом. Инструменты визуализации данных, такие как Tableau, Power BI или пользовательские информационные панели, позволяют аналитикам и заинтересованным сторонам получать ценную информацию из данных. Визуализации могут принимать форму диаграмм, графиков, тепловых карт и других графических представлений, что делает сложные данные более доступными и понятными.
- Машинное обучение. На этом этапе модели машинного обучения можно обучить и применить к обработанным и сегментированным данным для получения прогнозов, классификаций, рекомендаций и другой информации. Модели могут быть разработаны для изучения закономерностей исторических данных и прогнозирования будущих событий. Для разработки и развертывания этих моделей используются общие библиотеки машинного обучения, такие как TensorFlow, scikit-learn и PyTorch.
Стек технологий, который мы будем использовать в этом руководстве.
Вот краткое объяснение каждой технологии в упомянутом вами стеке:
- Kafka. Apache Kafka — это платформа потоковой обработки с открытым исходным кодом, которая широко используется для создания конвейеров данных в реальном времени и потоковых приложений. Он позволяет публиковать и подписываться на потоки записей (сообщений) отказоустойчивым и масштабируемым образом. Kafka часто используется для обработки потоков данных с высокой пропускной способностью и низкой задержкой, что делает его подходящим для таких приложений, как поиск событий, агрегирование журналов и аналитика в реальном времени.
- Vector от Datadog: Vector – это высокопроизводительный и легкий инструмент для сбора данных с открытым исходным кодом. Он предназначен для сбора, преобразования и маршрутизации данных журналов, показателей и событий в различные места назначения, такие как системы хранения, аналитические платформы и инструменты мониторинга. Vector поддерживает широкий спектр источников и назначений, обеспечивая гибкость при настройке конвейеров данных. Это особенно полезно для эффективного перемещения данных из различных источников в нужные конечные точки.
- ClickHouse: ClickHouse — это система управления столбчатыми базами данных с открытым исходным кодом, оптимизированная для аналитической обработки в реальном времени (OLAP). Он предназначен для обработки больших объемов данных и быстрого выполнения сложных аналитических запросов. Столбчатая структура хранения ClickHouse и оптимизация производительности делают ее подходящей для приложений хранения данных и отчетности, где скорость и эффективность имеют решающее значение.
- Apache Spark. Apache Spark – это платформа распределенных вычислений с открытым исходным кодом, предоставляющая единую платформу для обработки и анализа больших наборов данных. Он поддерживает пакетную обработку, интерактивные запросы, потоковую обработку и машинное обучение. Spark предлагает API-интерфейсы высокого уровня на таких языках, как Scala, Python, Java и SQL, что делает его доступным для разработчиков с различными наборами навыков. Он использует обработку в памяти и оптимизированные планы выполнения для ускорения задач обработки данных.
В типичном технологическом стеке эти инструменты могут работать вместе, образуя комплексный конвейер обработки и анализа данных. Например, Kafka можно использовать для приема потоков данных в реальном времени, Vector можно использовать для сбора и маршрутизации журналов и показателей в системы хранения или аналитики, Clickhouse может служить серверным хранилищем аналитических данных, а Apache Spark может обрабатывать и анализировать. данные, хранящиеся в Clickhouse, что позволяет выполнять сложные преобразования данных и решать задачи машинного обучения.
Установка программного стека
Мы не будем вдаваться в подробности этапов установки, поскольку каждое программное обеспечение имеет очень хорошие руководства по установке и руководства, поэтому мы перенаправим вас на эти страницы.
Для установки Clickhouse следуйте официальному руководству по установке.
Для установки вектора следуйте официальному руководству по установке.
Чтобы установить Kafka, следуйте официальному руководству по установке confluent.
Теперь, когда на вашем компьютере установлены все три программного обеспечения, давайте начнем интеграцию (Часть 2).
Поддержка:
- 20 хлопков, если статья вам кажется информативной.
- 40 хлопков, если вы считаете, что статья отличается от других и ее можно использовать по-разному.
- 60 хлопков, если вы считаете, что статья выходит за рамки исследования.
- 100 хлопков, если статья вам кажется выдающейся.
- +1 дополнительная благодарность за то, что код и контент стали общедоступными и внесены в сообщество.