Привет, Хабр! Сегодня рассказываем, чем отличаются подходы к построению распределённых хранилищ данных Data Warehouse (DWH) и Data Lake и в чём специфика задач специалистов, работающих с данными.
Этот материал — переработанная версия вебинара о профессии Data-инженера. Слёрм провёл этот вебинар для комьюнити Data-специалистов «Где дата, Зин?».
На встрече эксперты описали подходы DWH и Data Lake, а потом поговорили о профессиональных ролях, непосредственно связанных с процессами в таких хранилищах: Data-инженер, ETL-инженер, DWH-инженер, дата-сайентист, ML-инженер, аналитик данных.
Пока спикеры вебинара делились своими мнениями и кейсами, ведущий составлял схему. Она позволяет быстро понять, чем занимаются, чем не занимаются и какими навыками обладают вышеупомянутые специалисты.
В статье сначала опишем паттерны построения распределённых хранилищ, чтобы понимать, через какие процессы проходят данные. А после поговорим о задачах специалистов по работе с данными и необходимых для каждой позиции навыках.
DWH vs Data Lake
Data Warehouse (DWH) — это хранилище, в котором собираются данные из разных систем-источников. С помощью DWH можно проводить анализ исторических и текущих данных. Идея такого хранилища появилась, когда стало ясно, что запускать аналитические запросы в продуктовой базе, например бэкенде сайта, — долго, дорого и рискованно. Для анализа данные нужно выносить из продуктового контура в аналитический.
Когда-то этот вопрос решался выгрузками в эксель, чтобы специально обученные люди работали с файлами. Сейчас, когда речь идёт о больших данных, мы можем быстро получать изменения продуктового контура в аналитическом. DWH — один из паттернов, которые для этого применяются. Это OLAP (Online Analytical Processing)-хранилище (в противовес OLTP— Online Transaction Processing), то есть ещё одна база данных или несколько. Для того чтобы с DWH можно было работать, надо настроить процесс копирования данных из продуктового контура в аналитический.
Паттерн DWH предполагает, что в хранилище вносятся структурированные данные, их структура предварительно преобразуется. Этот процесс переноса данных называют ETL (extract > transform > load).
У DWH есть одно ограничение. Так как это хранилище структурированных данных, их нужно подготовить, прежде чем залить в DWH. Подготовка может занимать довольно долгое время, поэтому заливка новых порций данных часто проходит периодически. В современных реалиях обрабатывать и заливать данные иногда можно потоком прямо в DWH (скажем, из Kafka напрямую в Clickhouse), но поддерживать такую систему в продакшене может быть довольно сложно.
Инструменты DWH:
Data Lake
Не всегда есть возможность структурировать данные перед отправкой в хранилище, так как не все источники могут гарантировать передачу данных по определённой схеме. Например, шина данных с JSON-файлами, которые собираются из REST — это слабоструктурированные данные, особенно когда они могут быть представлены в виде документов разного уровня вложенности и с разными наборами атрибутов.
Data Lake — это хранилище слабоструктурированных данных, полученных из разных источников. Загрузка данных в Data Lake происходит в «сыром» виде, а трансформация — после того, как они появляются в хранилище. Работает процесс ELT (extract > load > transform). Используя паттерн Data Lake, можно начать писать данные в процессе работы, а преобразовывать их для дальнейшего анализа уже после.
В подобном хранилище могут лежать как не имеющие структуры (или слабоструктурированные) данные, вроде картинок и видео, так и более структурированные, например, файлы Parquet. Кроме того, Data Lake может использоваться в качестве долговременного хранилища исторических данных с возможностью при необходимости «поднять архивы» за определённый период в прошлом. Такие «архивы» было бы неоптимально и дорого хранить полностью в DWH.
Инструменты Data Lake:
Data Warehouse (DWH) | Data Lake |
Структурированные данные | Слабоструктурированные данные |
ETL (extract > transform > load) | ELT (extract > load > transform) |
Существует ещё современный комбинированный вариант платформы данных — Data Lakehouse. Данные в этом случае лежат в слабоструктурированном хранилище, к такому хранилищу мы добавляем решение от вендора, позволяющее получить большую структурированность, большее количество метаданных или приблизиться к реалтайму.
Инструменты:
Дальше рассмотрим профессиональные роли, связанные с процессами в распределённых хранилищах данных. Перечислим задачи и необходимые компетенции для ETL-инженера, DWH-инженера, дата-сайентиста, ML-инженера, аналитика данных и Data-инженера, покажем их карьерный трек.
ETL-инженер
Задачи ETL-инженера — подключать к хранилищу разные источники данных (API, сервера очередей, базы данных, файлы разных типов) и преобразовывать полученные данные. В преобразование входит структурирование для размещения в общее хранилище, удаление дублей, обогащение данных на основе дополнительных источников.
Что нужно знать и уметь ETL-инженеру:
процессы, особенности используемых инструментов;
регулярные выражения;
SQL;
визуальное программирование (NiFi);
Git;
программирование (Python/Java/Groovy).
Чаще всего на эту позицию приходят из системного администрирования, бэкенд-разработки и аналитики (бизнес-аналитики, аналитики данных).
Чего не делает ETL-инженер:
не проектирует DWH (этим занимается DWH-инженер);
не прогнозирует и не занимается Data Science (задачи дата-сайентиста);
не разрабатывает stateful- и стриминговую аналитику (задачи Data-инженера);
не разворачивает платформы (это делает DataOps‑инженер, Platform-инженер);
не пишет REST API для сбора данных с REST-клиентов (задачи бэкенд-разработчика).
DWH-инженер
В задачи DWH-инженера входит проектирование надёжной структуры хранилища, которое сможет развиваться вместе с бизнесом. Он использует принцип Single source of truth (SSOT) для актуальности данных. Также он настраивает хранилища, включая настройку индексов, самостоятельно или с помощью DevOps-инженеров настраивает мониторинг и логирование DWH. А ещё формирует бизнес-ключи для разных объектов и Customer360 — представление всех данных о клиенте на одном экране.
Что нужно знать и уметь DWH-инженеру:
знать особенности инструментов;
SQL (включая использование DBT);
тюнинг Nix-системы;
понимание архитектуры данных;
Git;
Spark.
В эту профессию чаще всего приходят из DBA, DB-разработки, аналитики данных.
Чего не делает DWH-инженер:
не строит пайплайны (это делает ETL-инженер);
не занимается аналитикой и бизнес-аналитикой.
Дата-сайентист
Дата-сайентист обучает модели. Его задача — сформировать на основе имеющихся данных модель (статистическое представление), которая позволяет принимать решения для бизнеса. Модель может спрогнозировать отток клиентов, загрузку персонала, сегментировать аудиторию или создать продвинутую систему рекомендаций для пользователей. И это только малая часть возможных задач.
Также дата-сайентист находит неочевидные закономерности. К примеру, на основании цифрового следа пользователя может его классифицировать. Кроме того, дата-сайентисты используют Computer Vision. Эта технология даёт много возможностей, например, можно оценить поведение покупателей в магазине или провести первичную медицинскую диагностику по снимкам МРТ.
Что нужно знать и уметь дата-сайентисту:
иметь сильный математический бэкграунд;
Machine Learning;
Deep Learning и нейросети;
генеративные модели;
NLP (Natural Language Processing — работа с текстами, естественным языком);
SQL;
Git;
язык программирования (Python, R, MATLAB).
Чаще всего дата-сайентисты приходят в профессию из математиков, Data-инженеров или аналитиков данных.
Чего не делает дата-сайентист:
не делает ничего, не связанного со своими задачами
не пишет продуктовый код.
ML-инженер
ML-инженер помогает дата-сайентисту подготовить данные для обучения моделей, сопровождает жизненный цикл моделей (поддерживает модели в продакшене). А ещё он предоставляет инструменты для эффективной работы команды дата-сайентистов.
Что должен знать и уметь ML-инженер:
хорошо программировать (Python/Scala/Java; C++/Go; SQL; Git);
ML-библиотеки;
веб- и бэкенд-скиллы (должен быть готов собирать данные);
стриминг;
Spark/Databricks;
распределённые хранилища (Kafka);
Docker;
K8s.
Приходят на роль ML-инженера чаще всего из бэкенд-разработчиков, DWH- и DB-разработчиков, DWH-инженеров, дата-сайентистов.
Аналитик данных
Аналитики хорошо знают предметную область и продукт, общаются с бизнес-заказчиками. Они визуализируют данные, ищут инсайты и генерируют идеи.
Что нужно знать и уметь аналитику данных:
знание предметной области и продукта;
BI-инструменты (Power BI, Tableau, Superset);
SQL;
Excel;
soft skills.
В анализ данных чаще всего переходят из бизнес-аналитики, Data Science, бэкенд-разработки, системного администрирования и управления проектами.
Data-инженер
Завершаем обзор профессий описанием Data-инженера. Оставили его на конец материала, потому что Data-инженер (инженер данных) сейчас — должность с расплывчатым кругом обязанностей, куда может входить функционал всех перечисленных выше ролей. Список задач Data-инженера может сильно меняться в зависимости от текущих приоритетов бизнеса.
Чем может заниматься Data-инженер:
автоматизировать работу ETL- и DWH-инженеров, писать инструменты, генерирующие код;
писать пайплайны, задача которых извлекать данные из продуктовых источников (из одной базы или нескольких) и перекладывать в DWH;
реализовывать Data Lake;
настраивать стриминг, stateful-процессинг.
Что нужно знать и уметь:
хорошо программировать (Python/Scala/Java; SQL);
стриминговые платформы и распределённые системы, хранилища;
Spark/Databricks/Hadoop;
уметь то, что описано в ролях выше.
В профессию Data-инженера приходят из бэкенд-разработки, DWH-разработки, DB-разработки, DBA, DevOps.
Подведём итог
Сами по себе накопленные данные бесполезны. Data-инженер делает их доступными для анализа в нужной форме, в нужном месте и с нужными другим пользователям правами, для того чтобы дата-сайентисты и аналитики данных могли получить инсайты и создать новые возможности для бизнеса.
В функции Data-инженера может входить разный набор задач, в зависимости от процессов в компании, часть этих задач мы описали в статье в рамках других ролей.
Пара слов о развитии карьеры: Data-инженер может развиваться в направлении менеджмента и на следующем этапе руководить командой или несколькими, а может углубиться в технологии и перейти к роли Data-архитектора.
Где дата, Зин?
Слёрм создал тайно-нетайное общество Data-специалистов «Где дата, Зин?». Каждую неделю мы встречаемся в онлайне, чтобы обсудить дата-инженеринг и работу с данными, позадавать вопросы дата-мастерам, пообщаться друг с другом. А ещё — с пользой и весельем провести время.
В четверг, 24 августа, в 19:00 прошла вторая встреча общества на тему «Моделирование данных в DataLake: от вавилонской башни к дата-макдональдсу».
Обсудили:
Что такое моделирование данных?
Типичный Data Lakehouse
Логическое моделирование: EDW, Dimensional Modeling, Data Vault
Можно посмотреть запись⤵️
Стать последователем тайно-нетайного общества «Где дата, Зин?»→