Apache Spark

Основные преимущества Apache Spark:

  • Производительность
  • Удобный интерфейс
  • Отказоустойчивость
  • Поддержка четырех языков: Scala, Java, Python и R

Компоненты архитектуры Apache Spark

Apache Spark состоит из пяти компонентов: ядра и четырех библиотек, каждая из которых решает определенную задачу.
  1. Ядро Apache Spark (Spark Core) — основа фреймворка. Это базовый движок для параллельной и распределенной обработки данных. Ядро отвечает за:
    • Управление памятью и восстановление системы после отказов
    • Планирование, распределение и отслеживание заданий в кластере
    • Взаимодействие с хранилищем данных
  2. Apache Spark SQL — одна из четырех библиотек фреймворка, которая использует структуру данных DataFrames и может выступать в роли распределенного механизма запросов SQL. Библиотека возникла как порт Apache Hive для работы поверх Apache Spark (вместо MapReduce), а сейчас уже интегрирована со стеком Spark. Apache Spark SQL обеспечивает поддержку различных источников данных и позволяет переплетать SQL-запросы с трансформациями кода.
  3. Apache Spark Streaming — инструмент для обработки потоковых данных, который легко интегрируется с широким спектром популярных источников данных: HDFS, Flume, Kafka, ZeroMQ, Kinesis и Twitter. Apache Spark Streaming обрабатывает данные в реальном в режиме micro-batch, минимальное время обработки каждого micro-batch 0,5 секунды. Apache Spark Streaming получает входные потоки данных и разбивает данные на пакеты. Далее они обрабатываются движком Apache Spark, после чего генерируется конечный поток данных также в пакетной форме. API Spark Streaming точно соответствует API Spark Core, поэтому можно одновременно работать как с пакетными, так и с потоковыми данными.
  4. MLlib – библиотека для машинного обучения, предоставляющая различные алгоритмы: классификация, регрессия, деревья принятия решений, рекомендация, кластеризация, тематическое моделирование и т.д.
  5. GraphX – это библиотека для работы с графами и выполнения с ними параллельных операций. Библиотека предоставляет собой универсальный инструмент для исследовательского анализа и итерационных вычислений на основе графов. Кроме встроенных операций, GraphX также имеет библиотеку обычных алгоритмов для работы с графами, например, PageRank.

Некоторые примеры применения Apache Spark:

  • Банки и страховые компании (прогноз востребованности услуг)
  • Поисковики и социальные сети (выявление фейковых аккаунтов, оптимизация таргетинга и т.д.)
  • Службы такси (анализ времени и геолокаций, прогноз спроса и цен)
  • Транспортные и авиакомпании (модели для прогнозирования задержек рейсов)
  • В целом Spark подходит для решения любых задач, где необходима быстрая обработка больших объемов данных и/или продвинутая аналитика на больших данных.