Apache Spark — что это


Apache Spark — это opensource-фреймворк, который необходим для пакетной и потоковой обработки слабо структурированных и вообще не структурированных данных большого объёма.

Многие крупные компании, среди которых Amazon, eBay и Yahoo!, используют Spark в своей деятельности. Это объясняется тем, что в сравнении с инструментом Hadoop по целому ряду параметров фреймворк Apache Spark намного быстрее. Код на Spark тоже пишется быстрее, поскольку разработчикам предлагается больше высокоуровневых операторов.

Как появился Apache Spark

Считается, что наибольший вклад в появление Spark внёс румынско-канадский учёный Матей Захария. В 2009 году, будучи аспирантом Университета Калифорнии, он начал работу над проектом. А в 2010 опубликовал свой проект под лицензией BSD. Изначально Spark был написан на Scala, позже в проект добавили большой объём Java-кода, что позволило разрабатывать распределённые приложения на этом языке.

Через три года, в 2013 разработка Матея Захарии перешла в собственность Apache Software Foundation и была переведена на лицензию Apache 2.0, а ещё через года стала одним из основных проектов Apache.

Apache Spark реализован на архитектуре RDD (resilient distributed dataset). Суть в том, что мультимножества распределяются между отдельными узлами кластера. Сам кластер представляет собой цикличный направленный граф с узлами-мультимножествами и рёбрами-операциями. Работа с RDD возможна при помощи абстракций вроде Dataframe API и Dataset API. Многие организации работают со Spark, используя кластеры на тысячи узлов.

Apache Spark не является частью Apache Hadoop, но оба фрейморка совместимы между собой. Чтобы работать с Hadoop через Spark, не требуется дополнительных навыков, кластер Spark можно запустить вручную. Так, можно через YARN узлы кластера запускать, а данные хранить на HDFS. Разработка и тестирование выполняется через псевдораспределенный режим, где на каждый узел кластера приходится одно вычислительное ядро CPU.

Особенности Apache Spark

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

Apache Spark архитектура

Spark способен функционировать на базе Hadoop или системы управления кластером Mesos. В нём реализована поддержка популярных хранилищ (HDFS, OpenStack Swift, Cassandra, Amazon S3) и языков программирования (Scala, Python, Java, R, языки платформы .NET (C#/F#)). Также предоставляет следующие API-интерфейсы:

  • API Scala;
  • API Java;
  • API Python;
  • API R;
  • Spark SQL, встроенные функции.

Где и почему бизнес использует Apache Spark

Apache Spark часто называют одним из лучших opensource-решений библиотек для параллельной обработки данных на компьютерных кластерах. Разработчики и исследователи, работающие с big data, обычно хорошо знакомы с этим фреймворком. Запустить Spark можно хоть с ноутбука, хоть с кластера на тысячу серверов. Есть и удобные облачные решения Apache Spark.

Производительность и неприхотливость к потреблению ресурсов делают Apache Spark удобной платформой для обработки больших данных, вне зависимости от их объёма. Фреймворк буквально создан для решения любых задач, связанных с анализом данных. Благодаря наличию инструментов для потоковой аналитической обработки данных (SQL, Streaming, MLLib, GraphX), Spark применим в IoT-системах и бизнес-приложениях, построенных на базе машинного обучения. Например, в решениях, прогнозирующих отток клиентов или оценивающих финансовые риски.

Исследователям доступен объединённый набор библиотек (Python, R и т. д.) при моделировании, а веб-разработчикам — унифицированные фреймворки вроде Node.js или Django. Spark также широко применяется в средах, где архитектура Hadoop не востребована. Например, в публичном облаке, где можно покупать отдельные услуги. Например, хранение данных.

Преимущества Apache Spark

Скорость. Spark — это фреймворк, позволяющий работать очень быстро. Уменьшив количество циклов чтения-записи на диск и сохраняя промежуточные данные в памяти, этот инструмент запускает приложения в сто раз быстрее в памяти и в десять раз быстрее на диске по сравнению с Hadoop.

Простота. Благодаря широкому набору библиотек становится проще выполнять основные высокоуровневые операции при помощи RDD.

Работа с Big Data. Spark оптимизирован в плане скорости и вычислительной эффективности путём хранения основного объёма данных в памяти. По этой же причине он может работать медленнее Hadoop MapReduce, если объём данных настолько велик, что объёма RAM начинает не хватать.

Функциональность. Spark удобен тем, что архитектура RDD позволяет активировать операции в памяти, а Hadoop MapReduce сначала записывает промежуточные результаты на диск при итеративной обработке. Также Spark выполняет обработку практически в реальном времени, хорош для вычислений, необходимых при обработке графов. Даже соответствующий API есть — GraphX.·         

ML-ориентированность. В Spark уже есть встроенная ML-библиотека, чьи алгоритмы позволяют подключать устройства без дополнительной установки ПО, драйверов и т. д.



Полезный материал?
1
1
автор: Всеволод
опубликовано: 25.01.2023
Читайте нас: 
Последние статьи
Вверх!