Отрасли широко используют Hadoop для анализа своих наборов данных. Причина заключается в том, что платформа Hadoop основана на простой модели программирования (MapReduce) и обеспечивает масштабируемое, гибкое, отказоустойчивое и экономически эффективное вычислительное решение. Здесь основной задачей является поддержание скорости обработки больших наборов данных с точки зрения времени ожидания между запросами и времени ожидания для запуска программы.
Spark был представлен Apache Software Foundation для ускорения процесса вычислительных вычислений Hadoop.
В отличие от распространенного мнения, Spark не является модифицированной версией Hadoop и на самом деле не зависит от Hadoop, поскольку имеет собственное управление кластером. Hadoop — это только один из способов реализации Spark.
Spark использует Hadoop двумя способами: один — хранилище, а второй — обработка . Поскольку Spark имеет свои собственные вычисления управления кластером, он использует Hadoop только для целей хранения.
Apache Spark
Apache Spark — это молниеносная технология кластерных вычислений, предназначенная для быстрых вычислений. Он основан на Hadoop MapReduce и расширяет модель MapReduce, чтобы эффективно использовать ее для других типов вычислений, включая интерактивные запросы и потоковую обработку. Главной особенностью Spark являются кластерные вычисления в памяти, которые увеличивают скорость обработки приложения.
Spark предназначен для широкого спектра рабочих нагрузок, таких как пакетные приложения, итерационные алгоритмы, интерактивные запросы и потоковая передача. Помимо поддержки всех этих рабочих нагрузок в соответствующей системе, это снижает нагрузку на управление обслуживанием отдельных инструментов.
Эволюция Apache Spark
Spark — это один из подпроектов Hadoop, разработанный в 2009 году в AMPLab Калифорнийского университета в Беркли Матей Захария. Он был открыт в 2010 году по лицензии BSD. Он был пожертвован программному фонду Apache в 2013 году, и теперь Apache Spark стал проектом Apache высшего уровня с февраля 2014 года.
Особенности Apache Spark
Apache Spark имеет следующие особенности.
-
Скорость — Spark помогает запускать приложения в кластере Hadoop, до 100 раз быстрее в памяти и в 10 раз быстрее при работе на диске. Это возможно за счет уменьшения количества операций чтения / записи на диск. Он хранит промежуточные данные обработки в памяти.
-
Поддерживает несколько языков — Spark предоставляет встроенные API в Java, Scala или Python. Поэтому вы можете писать приложения на разных языках. Spark предлагает 80 высокоуровневых операторов для интерактивных запросов.
-
Расширенная аналитика — Spark поддерживает не только «Map» и «Reduce». Он также поддерживает запросы SQL, потоковые данные, машинное обучение (ML) и алгоритмы Graph.
Скорость — Spark помогает запускать приложения в кластере Hadoop, до 100 раз быстрее в памяти и в 10 раз быстрее при работе на диске. Это возможно за счет уменьшения количества операций чтения / записи на диск. Он хранит промежуточные данные обработки в памяти.
Поддерживает несколько языков — Spark предоставляет встроенные API в Java, Scala или Python. Поэтому вы можете писать приложения на разных языках. Spark предлагает 80 высокоуровневых операторов для интерактивных запросов.
Расширенная аналитика — Spark поддерживает не только «Map» и «Reduce». Он также поддерживает запросы SQL, потоковые данные, машинное обучение (ML) и алгоритмы Graph.
Искра, построенная на Hadoop
На следующей диаграмме показаны три способа построения Spark с использованием компонентов Hadoop.
Существует три способа развертывания Spark, как описано ниже.
-
Автономное — Spark. Автономное развертывание означает, что Spark занимает место над HDFS (распределенной файловой системой Hadoop), а пространство явно выделяется для HDFS. Здесь Spark и MapReduce будут работать бок о бок, чтобы охватить все искровые задания в кластере.
-
Hadoop Yarn — Развертывание Hadoop Yarn означает, что искра работает на Yarn без предварительной установки или доступа с правами root. Это помогает интегрировать Spark в экосистему Hadoop или стек Hadoop. Это позволяет другим компонентам работать поверх стека.
-
Spark в MapReduce (SIMR) — Spark в MapReduce используется для запуска искрового задания в дополнение к автономному развертыванию. С SIMR пользователь может запустить Spark и использовать его оболочку без какого-либо административного доступа.
Автономное — Spark. Автономное развертывание означает, что Spark занимает место над HDFS (распределенной файловой системой Hadoop), а пространство явно выделяется для HDFS. Здесь Spark и MapReduce будут работать бок о бок, чтобы охватить все искровые задания в кластере.
Hadoop Yarn — Развертывание Hadoop Yarn означает, что искра работает на Yarn без предварительной установки или доступа с правами root. Это помогает интегрировать Spark в экосистему Hadoop или стек Hadoop. Это позволяет другим компонентам работать поверх стека.
Spark в MapReduce (SIMR) — Spark в MapReduce используется для запуска искрового задания в дополнение к автономному развертыванию. С SIMR пользователь может запустить Spark и использовать его оболочку без какого-либо административного доступа.
Компоненты искры
На следующем рисунке изображены различные компоненты Spark.
Apache Spark Core
Spark Core — основной движок общего исполнения для платформы spark, на котором построены все остальные функции. Он обеспечивает вычисления в памяти и ссылки на наборы данных во внешних системах хранения.
Spark SQL
Spark SQL — это компонент поверх Spark Core, который представляет новую абстракцию данных, называемую SchemaRDD, которая обеспечивает поддержку структурированных и полуструктурированных данных.
Spark Streaming
Spark Streaming использует возможность быстрого планирования Spark Core для выполнения потоковой аналитики. Он принимает данные в мини-пакетах и выполняет преобразования RDD (Resilient Distributed Datasets) для этих мини-пакетов данных.
MLlib (Библиотека машинного обучения)
MLlib является распределенной структурой машинного обучения выше Spark из-за распределенной архитектуры Spark на основе памяти. Согласно тестам, это делается разработчиками MLlib против реализаций Alternating Least Squares (ALS). Spark MLlib в девять раз быстрее, чем дисковая версия Apache Mahout для Hadoop (до того, как Mahout получил интерфейс Spark).
Graphx
GraphX - это распределенная среда обработки графов поверх Spark. Он предоставляет API для выражения вычислений графов, который может моделировать пользовательские графы с помощью API абстракции Pregel. Это также обеспечивает оптимизированное время выполнения для этой абстракции.