Модуль 9.10: Data Warehousing та аналітика з Kubernetes
Складність: [COMPLEX] | Час на виконання: 2.5 год | Передумови: Модуль 9.4 (Об’єктні сховища), Модуль 9.7 (Стрімінгові дані), основи SQL
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»У травні 2024 року компанія з надання послуг таксі обробляла 8 мільйонів поїздок на день. Їхній аналітичний конвеєр був заплутаним клубком із CronJobs у Kubernetes: Python-скрипти витягували дані з Postgres, обробляли їх у пам’яті та завантажували в BigQuery. Кожен такий Job потребував 16 ГБ RAM, і система споживала 12 постійно ввімкнених подів ($6 800 на місяць). Коли одна задача падала через брак пам’яті, аналітики дізнавалися про це лише через 6 годин, бачачи пусті дашборди.
Команда переробила систему за допомогою Apache Airflow на Kubernetes. Тепер кожна задача запускалася як окремий под тільки тоді, коли вона реально була потрібна. Використання нативних команд завантаження BigQuery замість стрімінгу знизило витрати на 90%. Кошту обчислень впали з $6 800 до $1 200 на місяць, бо поди більше не працювали 24/7. Airflow автоматично перезапускав задачі при збоях і миттєво сповіщав про проблеми.
Цей модуль навчить вас поєднувати Kubernetes із потужними хмарними сховищами даних (BigQuery, Redshift, Snowflake). Ви дізнаєтеся, як оркеструвати складні конвеєри через Airflow, як використовувати ефемерні (тимчасові) сервери для важкої аналітики та як тримати витрати на Big Data під контролем.
Ландшафт хмарних сховищ даних
Розділ «Ландшафт хмарних сховищ даних»| Функція | BigQuery (GCP) | Redshift (AWS) | Snowflake (Multi-cloud) |
|---|---|---|---|
| Модель оплати | За запит (TB scanned) | За годину сервера | За кредит (compute) |
| Масштабування | Автоматичне (serverless) | Треба налаштовувати | Автоматичне |
| Інтеграція з K8s | Workload Identity | IRSA (IAM roles) | Key-pair auth |
| Завантаження | Storage Write API | COPY з S3 | Snowpipe |
Airflow на Kubernetes: Розумна оркестрація
Розділ «Airflow на Kubernetes: Розумна оркестрація»Apache Airflow — це стандарт для керування потоками даних. У Kubernetes він використовує KubernetesExecutor.
Як це працює:
- Airflow Scheduler бачить, що пора рахувати звіти.
- Він створює новий под у кластері спеціально для цієї задачі.
- Под виконує роботу (напр. SQL запит) і видаляється.
- Ви не платите за простій — тільки за хвилини реальної роботи.
Ефемерні кластери для аналітики
Розділ «Ефемерні кластери для аналітики»Іноді вам треба перерахувати дані за цілий рік. Це потребує 100 потужних серверів на 2 години. Замість того, щоб тримати їх постійно, ви налаштовуєте Spot/Preemptible node pools:
- Ви створюєте поди з тегом
workload: analytics. - Kubernetes бачить, що місця немає, і просить хмару запустити 100 дешевих Spot-машин.
- Через 2 години задачі закінчуються, поди зникають, і хмара автоматично видаляє сервери. Економія: до 80-90% порівняно зі звичайними серверами.
Безпека та доступ до даних
Розділ «Безпека та доступ до даних»Робота з аналітикою — це робота з найчутливішими даними компанії.
- Least Privilege: Поди, що вантажать дані (ETL), мають мати права тільки на запис у “staging” таблиці.
- Data Masking: Налаштуйте сховище так, щоб поди розробників бачили замасковані дані (напр.
****@gmail.comзамість реальної пошти). - Column-level Security: обмежуйте доступ до конкретних колонок із персональними даними через IAM.
Типові помилки
Розділ «Типові помилки»| Помилка | Чому це стається | Як виправити |
|---|---|---|
| Streaming Inserts для всього | Це здається простішим в коді | Це у 10 разів дорожче. Використовуйте Batch Load (COPY/LOAD) для великих обсягів |
| Немає партиціонування | Забули при створенні таблиць | Завжди діліть великі таблиці за датами. Це дозволяє сканувати 1 день замість 3 років, економячи тисячі доларів |
| Аналітика в продуктовій БД | ”Просто зроблю швидкий SELECT” | Важкий аналітичний запит може “покласти” сайт. Завжди робіть ETL у сховище даних |
| Формат CSV для великих даних | Звичка з Excel | Використовуйте Parquet або Avro. Вони стискаються у 5-10 разів краще і працюють швидше |
Тест
Розділ «Тест»1. Чому KubernetesExecutor в Airflow кращий за CeleryExecutor для аналітики?
Бо він створює поди під кожну задачу і видаляє їх після завершення. Це дозволяє кожній задачі мати свої ресурси (напр. одній 1 ГБ, іншій 32 ГБ) і не платити за сервери, коли немає роботи.
2. Як заощадити 90% бюджету на завантаженні даних у BigQuery?
Замість того, щоб слати дані через API (Streaming Inserts), спочатку збережіть їх у файл Parquet на Cloud Storage, а потім запустіть команду Load Job. Завантаження файлів у BigQuery є безкоштовним, на відміну від стрімінгу.
Практична вправа: Мій перший ETL
Розділ «Практична вправа: Мій перший ETL»- Створіть Job у Kubernetes, який читає CSV файл із бакета сховища.
- Обробіть дані (напр. порахуйте суму продажів за регіоном) прямо в коді Python.
- Завантажте результат у BigQuery або Redshift, використовуючи SDK вашої хмари.
- Перевірте, що под успішно завершився і видалився (status: Completed).
Вітаємо!
Розділ «Вітаємо!»Ви завершили трек Керованих Cloud-Native сервісів. Тепер ви знаєте, як поєднати гнучкість Kubernetes із надійністю та масштабом хмарних баз даних, черг, безсерверних функцій та аналітики.
Поверніться до головного меню, щоб переглянути інші треки або заглибитися в архітектуру конкретних хмарних провайдерів.