Почему появился Apache Spark?

«Почему появился Apache Spark?» — вопрос из категории Apache Spark, который задают на 33% собеседований Data Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Spark был создан в 2009 году в UC Berkeley как ответ на ключевое ограничение Hadoop MapReduce: низкую скорость выполнения итеративных алгоритмов (машинное обучение, графовые вычисления) и интерактивных аналитических запросов.

Основная проблема MapReduce: Каждый этап (map/reduce) записывает промежуточные данные на диск (HDFS), что создает огромные накладные расходы по вводу-выводу.

Решение Spark: Введение абстракции Resilient Distributed Datasets (RDD). RDD — это неизменяемая, отказоустойчивая коллекция данных, распределенная по кластеру, которую можно кэшировать в оперативной памяти. Это позволяет выполнять множество операций без обращения к диску.

Сравнение на примере итеративного вычисления (сумма чисел):

# PySpark пример: итеративное вычисление с кэшированием в памяти
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("Example").getOrCreate()
sc = spark.sparkContext

# Создаем RDD
numbers_rdd = sc.parallelize(range(1, 10001))

# Кэшируем в памяти для многократного использования
numbers_rdd.cache()

# Множество операций выполняются без перечитывания с диска
sum_result = numbers_rdd.sum()
count_result = numbers_rdd.count()
mean_result = sum_result / count_result

print(f"Sum: {sum_result}, Count: {count_result}, Mean: {mean_result}")
spark.stop()

Итог: Spark обеспечил скорость до 100 раз выше, чем Hadoop MapReduce для определенных задач, и предложил единую платформу (Spark SQL, Structured Streaming, MLlib, GraphX) для пакетной, потоковой обработки, машинного обучения и анализа графов.