Главная Веб-разработка Что такое Apache Spark и как он устроен

Что такое Apache Spark и как он устроен

от admin

Обзор быстрого фреймворка для работы с big data.

Работа с большими данными требует соответствующих инструментов — обычный компьютер просто не справится с обработкой терабайтов информации. Одним из таких инструментов является платформа Hadoop, которая обеспечивает распределённый анализ данных в кластерах из сотен и тысяч компьютеров.

Важная часть Hadoop — фреймворк Apache Spark. Он позволяет проводить обработку данных в режиме реального времени в отдельных кластерах, распределяя между ними задачи и обрабатывая результаты.

Из этой статьи вы узнаете:

Что такое Apache Spark

Apache Spark — это фреймворк для обработки и анализа больших объёмов информации, входящий в инфраструктуру Hadoop. Он позволяет быстро выполнять операции с данными в вычислительных кластерах и поддерживает такие языки программирования, как Scala, Java, Python, R и SQL.

Что такое Apache Spark и как он устроен

Spark ускоряет обработку больших данных, распределяя вычисления между сотнями и тысячами машин, объединённых в кластеры. Это не новая технология — за несколько лет до появления Spark в Hadoop с аналогичной целью использовался MapReduce.

Подход Spark выгодно отличается от классической парадигмы MapReduce и позволяет добиться большей скорости обработки данных. Это стало возможным благодаря ряду особенностей фреймворка.

Благодаря этим особенностям Spark имеет в десятки раз большую скорость работы с данными, чем MapReduce.

История появления Spark

В 2005 году Дуг Каттинг начал работать над программной инфраструктурой для распределённых вычислений в проекте Nutch. Это была поисковая машина на Java. В Nutch впервые использовали вычислительную концепцию MapReduce: именно она станет основой Hadoop и золотым стандартом распределённых вычислений.

Однако пользователи Hadoop столкнулись с проблемой — классическая MapReduce всегда выполняет процессы последовательно: сначала разделяет данные на кластеры, обрабатывает их и затем собирает информацию обратно. Это замедляет работу, так как обработка данных не может идти параллельно на отдельных этапах при сборе информации в режиме реального времени.

В 2009 году Матей Захария, аспирант Университета Калифорнии в Беркли, начал разрабатывать на Scala новый инструмент — Spark. В 2013 году права на проект были переданы фонду Apache Software Foundation, а в 2014 году его сделали одним из приоритетных проектов Apache. Именно Spark решил главную проблему MapReduce и позволил обрабатывать данные в режиме реального времени, не дожидаясь завершения каждого этапа анализа.

Из чего состоит Apache Spark

Apache Spark состоит из нескольких модулей:

  • Spark Core;
  • Spark SQL;
  • Spark Streaming;
  • MLlib;
  • GraphX.

Также фреймворк предоставляет API для работы с языками Python, Java и R. Таким образом, Spark поддерживает четыре языка программирования, включая родной Scala, на котором он написан, и SQL-подобный язык запросов. Рассмотрим каждый модуль подробнее.

Читать также:
Chrome DevTools: основные инструменты и полезные функции

Spark Core

Core-модуль обеспечивает основные функциональные возможности фреймворка: управление задачами, распределение данных, планирование и выполнение операций в кластере. Именно Spark Core позволяет работать с данными в оперативной памяти: он предоставляет для этого специальное API и обеспечивает высокую скорость обработки.

Spark SQL

Модуль для работы со структурированными данными, который поддерживает SQL-подобный язык запросов. Он позволяет использовать типичные для реляционных баз данных операции на распределённых данных.

Spark Streaming

Модуль Streaming содержит методы для обработки данных в реальном времени. Он отбирает отдельные блоки из общего потока данных, переводит их в форму мультимножества и передаёт в другие модули Spark.

GraphX

Библиотека содержит объекты и методы, которые упрощают обход и анализ графовых структур. Кроме того, в GraphX есть готовый набор алгоритмов для решения типовых задач графовой аналитики: ранжирования страниц, SVD++, подсчёта треугольников, обнаружения сообществ и так далее.

MLlib

Эта библиотека для машинного обучения включает в себя различные алгоритмы классификации, регрессии, кластеризации данных и так далее.

Из чего состоит Spark-приложение

В основе любого Spark-приложения лежат две сущности:

  • управляющий процесс — драйвер (driver);
  • набор распределённых рабочих процессов — исполнителей (executors).

Рабочий процесс в Apache Spark устроен просто:

  • У любой распределённой системы есть менеджер кластеров (cluster manager), контролирующий распределение ресурсов между исполнителями.
  • При запуске Spark-приложения драйвер запрашивает у менеджера кластеров ресурсы для запуска исполнителей.
  • Если ресурсы есть, менеджер кластеров запускает исполнители.
  • Драйвер отправляет доступным исполнителям свои задачи.
  • Исполнители проводят необходимые вычисления и отправляют результат драйверу.
  • После завершения всех вычислений исполнители закрываются, их ресурсы возвращаются в общий кластер. Теперь распределённая система может работать над другими задачами.

Где используется Apache Spark

Spark применяют в работе с большими данными и машинным обучением специалисты разного профиля: аналитики данных, дата-сайентисты и дата-инженеры. Области использования разнообразны. Приведём несколько примеров.

Что дальше

Начать работать со Spark можно после изучения его документации. А тем, кто хочет погрузиться в работу с инструментом глубже, помогут книги:

  • «Изучаем Spark» Холдена Карау и других авторов;
  • «Spark для профессионалов: современные паттерны обработки больших данных» Сэнди Ризы и других авторов;
  • «Эффективный Spark. Масштабирование и оптимизация» Холдена Карау и Рейчел Уоррен.

Внутренний формат Apache Spark, представляющий собой данные, распределённые по отдельным вычислительным узлам кластера.

SVD++ (Singular value decomposition++) — алгоритм матричной факторизации, лежащий в основе современных рекомендательных систем.

Похожие статьи