Data Engineer. 20-й поток
О чём курс
Data Engineer. 20-й поток — курс о задачах дата-инженера: от обработки данных до проектирования хранилища и создания BI-дашборда с ответами на вопросы бизнес-аналитиков.
Как устроен курс
Курс длится 10 недель и включает 30 занятий, 10 лабораторных работ и видеозаписи занятий с тайм-метками. Указанная нагрузка — 10–15 часов в неделю; в зависимости от начального уровня участие может занимать около 20 часов в неделю.
Лабораторные работы приближены к задачам дата-инженеров и выполняются в рабочей инфраструктуре. За два месяца вы выполните 10 практических заданий с разными инструментами. На второй неделе научитесь разворачивать Apache Kafka, отправлять и обрабатывать сообщения, а также познакомитесь с написанием пайплайнов на Apache Airflow.
На занятиях преподаватели-практики показывают инструменты и фреймворки, которые используются в лабах. Kafka, Airflow, ClickHouse, Spark, Redis и Docker изучают на подробных занятиях и применяют в лабораторных работах. Также в курс входят Apache Flink, Grafana, dbt, Kubernetes и другие инструменты; по некоторым предусмотрены дополнительные задания.
В ходе курса участники анализируют полученные знания и заполняют карту компетенций, знакомятся с альтернативами популярным инструментам и собирают дополнительные ресурсы. Полученные знания можно применять в работе и собственных проектах.
Презентации, Jupyter-ноутбуки, лабы и мануалы размещают в закрытом репозитории GitHub. Обучение проходит на русском языке с упором на международные технологии, включая Spark, Scala, SQL и архитектуру дата-платформ.
Кому адресован курс
- Аналитикам данных, которые хотят лучше понимать цикл работы с данными и инфраструктуру обработки, находить общий язык с дата-инженерами или познакомиться с инженерной ролью.
- Бэкенд-разработчикам с инженерным опытом, в том числе в нагруженных проектах, которые хотят узнать о задачах дата-инженеров и разработке высоконагруженных дата-приложений или сменить область работы.
- Техлидам и менеджерам команд дата-аналитиков, которым нужно ориентироваться в инструментах и технологиях, определять направление развития команды, оценивать сроки и понимать требования бизнеса. Курс также позволяет освежить знания о современных инструментах и практиках DE.
- Практикующим дата-инженерам, которые хотят структурировать знания и познакомиться с инструментами и подходами.
Авторы курса рассчитывают, что после обучения вы сможете работать дата-инженером и развиваться в профессии. Обучение рассчитано также на тех, кто переехал или планирует карьеру в другой стране; в исходном описании упомянуты рынки СНГ, Европы и Израиля и глобальные IT-компании.
Рекомендуемые знания
- Python: базовый синтаксис, циклы, условные операторы, функции, чтение и запись файлов. Это основной язык курса; он понадобится для Spark и Airflow.
- Основы Linux: вход на удалённый сервер по SSH, настройка авторизации по SSH-ключу, команды для перемещения по директориям, создания и редактирования файлов и выход из vim. Командная строка понадобится для работы с кластером.
- SQL: язык пригодится для скриптов SparkSQL при работе с Apache Spark и небольших запросов к ClickHouse в нескольких лабах.
Что учесть перед обучением
Курс включает инженерные практики и не рассчитан на обучение ML-моделей. Занятия можно смотреть без выполнения лаб, но авторы считают, что такой формат существенно уменьшает ценность участия. Почти во всех лабораторных работах нужно писать код и редактировать конфигурации на машинах. При высокой нагрузке в даты курса авторы советуют учитывать время, необходимое для занятий.
Авторы
Игорь Мосягин — ментор программы, Data Consultant в shrimpsizemoose AB.
Другие авторы
- Дмитрий Андреев — координатор, ведущий инженер по работе с инфраструктурой данных, Райффайзенбанк.
- Максим Тарасов — координатор, Lead R&D Engineer, White Wave Media.
- Николай Марков — Data Platform Lead, Altenar.
- Сергей Гришаев — Senior Data Engineer, Wildberries.
- Егор Матешук — технический директор, ГПМ Дата.
- Александр Зайцев — CTO, Altinity.
- Валерия Дымбицкая — разработчик, Upgini.
- Екатерина Островская — руководитель направления развития бизнес хранилища данных, Райффайзенбанк.
- Андрей Кучеров — TechLead DE, Beeline.
- Андрей Серебрянский — Lead Developer, Яндекс.
Старт — весной 2027 года.
Программа обучения
- Лабораторные работы
- Темы занятий: Apache Kafka, DWH, Airflow, ClickHouse, Hadoop, Spark, Docker, Ansible, Kubernetes, Spark Streaming, мониторинг Linux-инфраструктуры, форматы хранения данных, CI/CD, Redis, базы данных и хранилища, параллелизм в Python, Flink, NiFi, dbt, Small Data и карта развития дата-инженера
- Лабораторные работы:
- Лаба 1. Подготовка инфраструктуры
- Вы настроите собственную ноду в облаке, которая станет вашим учебным стендом для всей программы – так вы разберетесь, как настроить необходимые доступы для следующих лаб
- Вы прокачаете базовые практики DevOps и познакомитесь с компонентами дата-инфраструктуры
- Лаба 2. Batch-обработка
- Вы организуете пакетную обработку данных в хранилище: получите данные из Kafka с помощью landing-схемы в ClickHouse, а затем, используя Airflow, будете считать агрегаты и перекладывать данные внутри ClickHouse
- Вы напишете свой DAG для обработки и научитесь использовать консоль для управления этими инструментами
- Здесь понадобятся базовые знания Python и отсутствие страха работы с командной строкой
- Лаба 3. Потоковая обработка данных
- Так как под "потоковой обработкой" часто имеют ввиду "батч-обработку просто с очень маленькими батчами", то эта лаба будет опираться на предыдущую с добавлением новых инструментов
- Здесь также заложена вариативность используемых инструментов, и у вас будет возможность познакомиться с несколькими решениями реализации потоковой обработки в зависимости от технических условий задачи
- Лаба 4. Data-сервис
- Вам предстоит написать свой небольшой сервис на Python (мы покажем как) и добавить две системы для дашбордов: одну с бизнес-метриками и одну для операционных задач
- Мы разберёмся, в чём разница, и на каких технологиях это делается – примерим на себя шляпу инженера разработки аналитики
- Лаба 5. Сервис персонализации
- Вам предстоит использовать очень грязный источник для дополнительного обогащения данных о событиях пользователей e-commerce портала
- Вы создадите витрину для маркетинговой аналитики по результатам прошедшей распродажи и изрядно повозитесь с расчётом агрегатов
- Лаба 6. Контейнеризация и CI/CD
- Ты реализуешь версионирование своего проекта: создашь и настроишь окружение для автоматической сборки и публикации своих пайплайнов в облако
- Научишься основам управления версиями, автоматизации развёртывания и познакомишься с инструментами для управления контейнерами
- Лаба 7. dbt
- С помощью инструмента dbt соберёте аналитическую витрину в ClickHouse на базе данных о поведении пользователей
- Закрепите работу с источниками и генерацию моделей данных в аналитическом хранилище
- Лаба 8. Хранилище для BI-дашборда
- Эта лаба отличается более открытым техзаданием и позволяет составить впечатление о том, как может выглядеть ваша работа при коммуникации с людьми, далёкими от мира обработки данных
- У вас будет постоянно пополняющийся внешний источник данных, для которого нужно спроектировать хранилище и реализовать BI-дашборд с ответами на вопросы бизнес-аналитиков
- Лаба 1. Подготовка инфраструктуры
- Темы занятий:
- Тема 1. Apache Kafka:
- Краткая история развития Kafka
- Ключевые концепции и зачем она может вообще быть нужна
- Топики, publisher/subscriber модель, внутренние компоненты
- Инструменты и библиотеки для работы с Kafka
- Демо
- Тема 2. DWH:
- OLAP MPP DB: определение, цели, особенности
- Распространенные решения
- Архитектура OLAP MPP DB на примере Vertica
- Демонстрация работы: таблицы, проекции, запросы
- Data warehouse: общие сведения и методологии
- Тема 3. Airflow:
- Зачем, что и как можно автоматизировать
- Компоненты Airflow которые надо знать, чтобы сделать на нём что-нибудь
- Как написать свой DAG и что это такое
- Куда и как развивается проект
- Чем можно заменить Airflow и на что обращать внимание при сравнении
- Демо, лайвкодинг
- Тема 4. ClickHouse:
- Что такое колоночные базы данных и зачем они нужны
- Дизайн ClickHouse
- Оптимизация схемы для производительности
- Загрузка JSON в ClickHouse
- ClickHouse и Kafka
- Тема 5. Hadoop:
- Как хранить и обрабатывать данные
- Что является большими данными, а что - нет
- Какие средства обработки и хранения данных есть, и как они работают
- Тема 6. Spark:
- Общее устройство и преимущества Spark
- Три уровня API к данным. DataFrame. Как создавать, читать, смотреть и писать данные с HDFS и других источников (в т.ч. PostgreSQL). Схема датафрейма
- Способы обращения к колонкам
- Оптимизации при чтении. Push-down filter
- Ленивое выполнение. Трансформации и действия
- Очистка данных. Встроенные и пользовательские функции. Агрегационные функции
- Union и join – отдельные моменты
- Кэширование и контрольные точки
- Shuffle и Broadcast
- Немного про модель памяти
- Тема 7. Docker. Ansible. Kubernetes:
- Пишем свой Dockerfile
- Как запускать контейнеры из командной строки
- Пара слов о Docker Compose
- Зачем нужен Kubernetes
- Играем в локальный кластер
- Настройка сети и прочие шалости
- Хранение данных в Kubernetes
- Тема 8. Spark Streaming:
- Structured Streaming
- Rate Streaming
- File Streaming
- Kafka Streaming
- Stateful Streaming
- Окна: дубликаты и watermark'и, агрегаты
- Join: static и stream
- Тема 9. Мониторинг Linux-инфраструктуры:
- Зачем дата-инженерам траблшутинг
- Диагностируем проблемы из консоли
- Как руками анализировать состояние CPU, RAM, дисковой и сетевой подсистемы
- Системные вызовы и низкий уровень анализа
- Обзор существующих комплексных решений для мониторинга и работа с ними
- Тема 10. Форматы хранения данных:
- Txt
- SequenceFile
- Avro
- Protobuf
- ORC
- Parquet
- Тема 11. CI/CD:
- Что такое DevOps и MLOps?
- Пара слов о методологиях разработки программного обеспечения
- Управление зависимостями Python-проекта
- Репозитории для всего сразу и одновременно
- Аргументы и конфиги
- Работа с пакетами для Python
- Как выглядит CI/CD на GitlabCI и Jenkins
- Пара слов об управлении конфигурацией через Ansible
- Тема 12. Redis:
- Какие бывают различия между NoSQL и SQL
- Как использовать redis как горячее хранилище
- Как использовать redis для ускорения расчётов
- Когда стоит и когда не стоит использовать redis
- Демо
- Тема 13. Введение в базы данных. Хранилища и методологии:
- Реляционная модель и PostgeSQL
- Structured Query Language
- ACID и транзакции
- Моделирование данных
- Индексы и оптимизации
- Greenplum
- Тема 14. Параллелизм в Python:
- Как устроены потоки в операционных системах
- Зачем в питоне GIL и как он работает
- В чем разница между параллельностью, асинхронностью и конкурентностью
- Пара слов о микросервисах на Python
- Асинхронная работа со внешними хранилищами
- Тема 15. Flink:
- Scala: основы и базовый синтаксис
- Apache Flink: описание и сравнение со Spark Streaming
- Flink API: источники и приемники, операторы, event time vs processing time
- Практические примеры
- Внутреннее устройство Flink
- Тема 16. NiFi:
- Что такое NiFi
- Controller Services
- Список доступных процессоров
- Flow File Details
- Объединение в Process Group
- Статусы процессоров
- Список всех шаблонов
- Процессор SplitJson
- Convert JSONToSQL
- PutSQL
- One registry
- Registry & Git
- Variables & Parameter Contexts
- Кластерный режим – архитектура
- MiNiFi
- Тема 17. dbt:
- Что такое dbt и какие задачи решает
- Основные термины, особенности и фичи инструмента
- Как запустить dbt с любой БД
- Демо (посмотрим, как всё просто работает)
- Документирование и тестирование данных из коробки
- Как запустить dbt в продуктиве
- Новые возможности с Python-моделями
- Тема 18. Small Data:
- Снова о том, что такое Big Data
- Причины популярности инструментов анализа данных
- На какие старые подходы стоит обратить внимание
- Почему Developer Experience снова оказывается важен
- Какие технологии посмотреть и что попробовать для хранилищ небольших данных
- Тема 19. Карта развития дата-инженера:
- Куда развиваться
- Направления и задачи
- Тема 1. Apache Kafka:
Теги курса
Другие материалы автора 3
ИМ Игорь Мосягин Все материалыОтзывов пока нет. Будьте первым!
Этот курс сейчас в процессе организации складчины. Нажмите кнопку «Записаться» и ожидайте старта — вам придёт уведомление. Когда складчина стартует, в карточке курса будет указан актуальный взнос. Текущая цена пока в процессе формирования и может отличаться от финальной.
Да, мы стремимся, чтобы финальный взнос был не больше ≈10% от оригинальной цены курса. Чем больше участников записывается в складчину, тем ниже выходит взнос для каждого.
Нажмите кнопку «Записаться» и авторизуйтесь на сайте через email (через ту же почту, которую будете использовать для входа). В личном кабинете вас будут ждать инструкции, как пригласить других участников — чем больше людей записалось, тем быстрее стартует складчина и тем ниже взнос. Как только складчина готова к приобретению, вам придёт уведомление.
