# Технологии Обработки и Анализа Данных

Это "движки", которые выполняют вычисления над сохраненными данными.

* **Пакетная обработка (Batch Processing):**
  * **Apache Hadoop MapReduce:** "Прадедушка" пакетной обработки. Надежен, но медленен из-за записи промежуточных результатов на диск.
  * **Apache Spark:** Стал стандартом для пакетной обработки благодаря использованию памяти (in-memory computing), что ускоряет вычисления в разы по сравнению с MapReduce. Используется для сложных ETL-задач.
* **Интерактивные SQL-запросы (Interactive SQL):**
  * **SQL-on-Hadoop / Lakehouse движки:** Позволяют аналитикам выполнять быстрые SQL-запросы напрямую к данным в озере. Ключевые игроки: высокопроизводительный движок **Trino** (бывший Presto SQL) и **Apache Impala**.
  * **Аналитические СУБД:** Классические DWH и специализированные БД для аналитики, такие как **ClickHouse**, **StarRocks**, которые обеспечивают молниеносную скорость ответа на дашбордах.

## Технологии для Реализации Архитектурных Паттернов

Это способы организации вышеперечисленных технологий для решения комплексных бизнес-задач.

### Lambda Architecture

Эта архитектура создана, чтобы совместить "точность" (batch) и "скорость" (stream).

* **Состав технологий:**
  * **Batch Layer:** Здесь правит **Apache Spark** (для периодического пересчета всей истории) и **HDFS / S3** для хранения неизменяемого мастер-набора данных.
  * **Speed Layer:** Для обработки потока в реальном времени и компенсации задержки batch-слоя используются **Apache Kafka** (прием потока) и **Apache Flink / Storm** (быстрая обработка).
  * **Serving Layer:** База данных, способная быстро отдавать результаты. Это могут быть NoSQL-решения, такие как **Apache HBase** или **Apache Cassandra**, либо специализированные аналитические БД, например, **Apache Druid** или **ClickHouse**, которые умеют объединять данные из разных источников.

### Kappa Architecture

Упрощенный вариант Lambda, где вся обработка происходит в едином потоковом конвейере. Batch-обработка заменяется возможностью "перемотать" поток назад и переобработать данные.

* **Состав технологий:**
  * **Хранилище событий (Log):** Мощный и долговечный брокер сообщений, который может хранить данные не один день, а недели. **Apache Kafka** — идеальный кандидат для этой роли.
  * **Единый потоковый движок:** Один движок для всего. **Apache Flink** отлично подходит благодаря своим мощным возможностям управления состоянием и обработки событийного времени (event time processing). Альтернативы — Kafka Streams или Spark Streaming.
  * **Serving Layer:** База данных для хранения результатов. Здесь также часто используются **Apache Cassandra**, **ClickHouse**, **Elasticsearch**.
