Learning Platform
Глоссарий Troubleshooting
Урок 14.02 · 10 мин
Начальный
ГлоссарийТерминыОпределения

Глоссарий

Ключевые термины, используемые в курсе. Определения на русском, термины на английском (как принято в индустрии).


Архитектура и ядро

Action — операция, которая запускает выполнение DAG и возвращает результат driver-у. Примеры: collect(), count(), show(), write(). Без action ни один код не выполняется (lazy evaluation).

Catalyst Optimizer — rule-based и cost-based optimizer в Spark SQL. Трансформирует логический план запроса в оптимальный физический план через 4 фазы: Analysis → Logical Optimization → Physical Planning → Code Generation.

Cluster Manager — внешний сервис, управляющий ресурсами кластера. Поддерживаемые: YARN, Kubernetes, Mesos, Standalone.

DAG (Directed Acyclic Graph) — граф зависимостей между RDD-партициями. DAGScheduler разбивает граф на stage-и по shuffle-границам.

DataFrame — распределённая коллекция данных с именованными колонками, аналогичная таблице в реляционной БД. Основной API для работы с данными в Spark.

Dataset — типизированный DataFrame (только в Scala/Java). В PySpark DataFrame = Dataset[Row].

Driver — процесс, который координирует выполнение Spark-приложения. Запускает SparkContext, создаёт DAG, распределяет task-и по executor-ам.

Executor — JVM-процесс на worker-ноде, выполняющий task-и и хранящий данные в памяти/на диске. Каждое приложение имеет свои executor-ы.

Job — набор stage-ей, создаваемый при вызове action. Один action = один job.

Lazy Evaluation — стратегия, при которой трансформации не выполняются сразу, а записываются в DAG. Выполнение начинается только при вызове action.

Partition — логическая единица параллелизма. Каждая partition обрабатывается одним task-ом на одном ядре. Число partition-ов определяет степень параллелизма.

RDD (Resilient Distributed Dataset) — низкоуровневая абстракция распределённых данных. Иммутабельная, партиционированная коллекция с lineage для восстановления. DataFrame строится поверх RDD.

SparkContext — главная точка входа в Spark (до Spark 2.0). Заменён на SparkSession.

SparkSession — унифицированная точка входа в Spark (с Spark 2.0). Объединяет SparkContext, SQLContext, HiveContext.

Stage — набор task-ов, которые могут выполняться параллельно без shuffle. Stage-и разделяются shuffle-границами.

Task — единица выполнения, обрабатывающая одну partition на одном ядре executor-а.

Transformation — операция, создающая новый RDD/DataFrame из существующего. Бывает narrow (без shuffle) и wide (с shuffle).

Tungsten — проект оптимизации Spark: off-heap memory management, cache-aware computation, whole-stage codegen. Устраняет JVM overhead.


Performance и оптимизация

AQE (Adaptive Query Execution) — механизм динамической оптимизации, который адаптирует план выполнения на основе runtime-статистики. Включает coalesce partitions, skew join handling, dynamic partition pruning.

Broadcast Join — стратегия join, при которой маленькая таблица рассылается всем executor-ам, избегая shuffle большой таблицы. Порог: spark.sql.autoBroadcastJoinThreshold.

Codegen (Code Generation) — генерация Java-байткода из Catalyst-плана вместо интерпретации. Whole-stage codegen объединяет цепочку операторов в один метод.

Data Skew — неравномерное распределение данных по partition-ам. Приводит к тому, что один task обрабатывает значительно больше данных, чем остальные.

Dynamic Partition Pruning (DPP) — оптимизация, при которой фильтр из dimension-таблицы join-а применяется к fact-таблице на этапе scan. Снижает объём чтения.

Narrow Transformation — трансформация, при которой каждая output-partition зависит от одной input-partition (1:1). Примеры: filter(), map(), select(). Не вызывает shuffle.

Shuffle — перераспределение данных между executor-ами по сети. Самая дорогая операция в Spark. Возникает при groupBy(), join(), repartition().

Spill — запись данных на диск, когда executor-у не хватает памяти для shuffle-буферов или сортировки. Сигнал нехватки памяти.

Wide Transformation — трансформация, при которой output-partition-ы зависят от нескольких input-partition-ов. Примеры: groupBy(), join(), distinct(). Вызывает shuffle.


Streaming

Checkpoint — механизм сохранения прогресса streaming query на надёжное хранилище (HDFS, S3). Обеспечивает exactly-once семантику при перезапуске.

Micro-batch — модель обработки в Structured Streaming: данные накапливаются за интервал (trigger) и обрабатываются как batch.

State Store — key-value хранилище для stateful-операций (aggregation, dedup, session windows). По умолчанию — HDFS-backed, для production рекомендуется RocksDB.

Structured Streaming — потоковый API Spark, построенный на DataFrame/Dataset. Трактует поток как бесконечную таблицу.

Trigger — определяет, когда запускать следующий micro-batch. Варианты: processingTime, once, availableNow, continuous.

Watermark — механизм отслеживания прогресса event time. Определяет, когда можно безопасно отбросить поздние данные.


Форматы и хранение

Arrow (Apache Arrow) — columnar in-memory формат данных. Используется для эффективного обмена между Spark (JVM) и Python/pandas.

Delta Lake — open-source lakehouse формат от Databricks. ACID-транзакции, time travel, schema enforcement, Z-ordering.

Hudi (Apache Hudi) — lakehouse формат для incremental обработки. Copy-on-Write и Merge-on-Read таблицы, compaction.

Iceberg (Apache Iceberg) — lakehouse формат с hidden partitioning, schema evolution, time travel. Catalog-based управление таблицами.

Parquet — columnar формат файлов. Стандарт де-факто для аналитических workload-ов. Поддерживает predicate pushdown, column pruning.

ORC (Optimized Row Columnar) — columnar формат, популярный в Hive-экосистеме. Встроенные индексы и bloom filter-ы.


Нативное выполнение

Comet — Apache DataFusion backend для Spark. Заменяет JVM-операторы нативными Rust-реализациями. Неподдерживаемые операторы fallback-ят на JVM.

Gluten — plug-in для Spark, заменяющий JVM execution layer на нативные backend-ы (Velox от Meta или ClickHouse).

Photon — проприетарный нативный execution engine от Databricks. Написан на C++, оптимизирован для Delta Lake workload-ов. Стандартен в Databricks Runtime 16/17 (2025): DBR 16.4 поставляется с Photon v2, DBR 17.0 включает advanced Photon optimizations.

Velox — C++ columnar execution library от Meta. Используется как backend в Gluten и Prestissimo.


Shuffle-сервисы

Celeborn (Apache Celeborn) — remote shuffle service (бывший RemoteShuffleService от Alibaba). Хранит shuffle-данные на выделенных worker-нодах.

ESS (External Shuffle Service) — встроенный в Spark сервис, позволяющий читать shuffle-данные после завершения executor-а. Запускается на каждой worker-ноде.

Uniffle (Apache Uniffle) — remote shuffle service от Tencent. Альтернатива Celeborn с поддержкой HDFS и local disk как storage backend.

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 2