Перейти до вмісту

Модуль 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)Треба налаштовуватиАвтоматичне
Інтеграція з K8sWorkload IdentityIRSA (IAM roles)Key-pair auth
ЗавантаженняStorage Write APICOPY з S3Snowpipe

Airflow на Kubernetes: Розумна оркестрація

Розділ «Airflow на Kubernetes: Розумна оркестрація»

Apache Airflow — це стандарт для керування потоками даних. У Kubernetes він використовує KubernetesExecutor.

Як це працює:

  1. Airflow Scheduler бачить, що пора рахувати звіти.
  2. Він створює новий под у кластері спеціально для цієї задачі.
  3. Под виконує роботу (напр. SQL запит) і видаляється.
  4. Ви не платите за простій — тільки за хвилини реальної роботи.

Ефемерні кластери для аналітики

Розділ «Ефемерні кластери для аналітики»

Іноді вам треба перерахувати дані за цілий рік. Це потребує 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»
  1. Створіть Job у Kubernetes, який читає CSV файл із бакета сховища.
  2. Обробіть дані (напр. порахуйте суму продажів за регіоном) прямо в коді Python.
  3. Завантажте результат у BigQuery або Redshift, використовуючи SDK вашої хмари.
  4. Перевірте, що под успішно завершився і видалився (status: Completed).

Ви завершили трек Керованих Cloud-Native сервісів. Тепер ви знаєте, як поєднати гнучкість Kubernetes із надійністю та масштабом хмарних баз даних, черг, безсерверних функцій та аналітики.

Поверніться до головного меню, щоб переглянути інші треки або заглибитися в архітектуру конкретних хмарних провайдерів.