Что такое архитектура Data Lake?

«Что такое архитектура Data Lake?» — вопрос из категории Архитектура, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Data Lake (Озеро данных) — это централизованное хранилище, предназначенное для хранения огромных объемов структурированных, полуструктурированных (JSON, XML) и неструктурированных (логи, изображения, видео) данных в их исходном, сыром формате.

Ключевые принципы и характеристики:

Принцип Описание
Схема при чтении Данные загружаются "как есть", без предварительной трансформации. Структура (схема) накладывается в момент анализа, а не при записи.
Масштабируемость Строится на распределенных файловых системах (HDFS) или облачных объектных хранилищах (Amazon S3, Azure Blob Storage).
Разнообразие форматов Поддерживает CSV, Parquet, ORC, Avro, JSON, текстовые файлы, изображения и др.
Доступность Данные доступны для различных групп аналитиков, data scientists и инженеров.

Пример загрузки данных в Data Lake (AWS S3 с Java SDK):

import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.core.sync.RequestBody;

S3Client s3 = S3Client.create();

// Загрузка сырого JSON-файла в озеро
s3.putObject(req -> req.bucket("company-data-lake")
                       .key("raw/logs/2023-10-01/app-events.json"),
             RequestBody.fromFile(Paths.get("app-events.json")));

Преимущества перед Data Warehouse:

  • Гибкость хранения любых данных.
  • Более низкая стоимость хранения.
  • Возможность отложенной обработки и анализа.

Риски (Data Swamp): Data Lake может превратиться в "болото данных", если отсутствуют:

  1. Управление метаданными (каталогизация, глоссарий).
  2. Data Governance (управление доступом, качеством данных).
  3. Система контроля версий данных.

Для обработки данных из Data Lake используются фреймворки, такие как Apache Spark, Apache Hive или Presto.