Spark - Введение
Промышленности широко используют Hadoop для анализа своих наборов данных. Причина в том, что фреймворк Hadoop основан на простой модели программирования (MapReduce) и обеспечивает масштабируемое, гибкое, отказоустойчивое и экономичное вычислительное решение. Здесь основная задача - сохранить скорость обработки больших наборов данных с точки зрения времени ожидания между запросами и времени ожидания для запуска программы.
Spark был представлен Apache Software Foundation для ускорения программного процесса вычислительных вычислений Hadoop.
В отличие от общего убеждения, Spark is not a modified version of Hadoopи на самом деле не зависит от Hadoop, потому что имеет собственное управление кластером. Hadoop - это лишь один из способов реализации Spark.
Spark использует Hadoop двумя способами. storage и второй processing. Поскольку Spark имеет собственное вычисление для управления кластером, он использует Hadoop только для хранения.
Apache Spark
Apache Spark - это молниеносная технология кластерных вычислений, предназначенная для быстрых вычислений. Он основан на Hadoop MapReduce и расширяет модель MapReduce, чтобы эффективно использовать ее для большего количества типов вычислений, включая интерактивные запросы и потоковую обработку. Главная особенность Spark - этоin-memory cluster computing что увеличивает скорость обработки приложения.
Spark предназначен для охвата широкого спектра рабочих нагрузок, таких как пакетные приложения, итерационные алгоритмы, интерактивные запросы и потоковая передача. Помимо поддержки всех этих рабочих нагрузок в соответствующей системе, это снижает нагрузку на управление, связанную с поддержкой отдельных инструментов.
Эволюция Apache Spark
Spark - это один из подпроектов Hadoop, разработанный в 2009 году в AMPLab Калифорнийского университета в Беркли Матей Захария. Он был открыт в 2010 году по лицензии BSD. Он был передан в дар Фонду программного обеспечения Apache в 2013 году, и теперь Apache Spark стал проектом Apache верхнего уровня с февраля 2014 года.
Особенности Apache Spark
Apache Spark имеет следующие особенности.
Speed- Spark помогает запускать приложение в кластере Hadoop до 100 раз быстрее в памяти и в 10 раз быстрее при запуске на диске. Это возможно за счет уменьшения количества операций чтения / записи на диск. Он хранит данные промежуточной обработки в памяти.
Supports multiple languages- Spark предоставляет встроенные API на Java, Scala или Python. Поэтому вы можете писать приложения на разных языках. Spark предлагает 80 операторов высокого уровня для интерактивных запросов.
Advanced Analytics- Spark поддерживает не только «Карта» и «уменьшить». Он также поддерживает SQL-запросы, потоковые данные, машинное обучение (ML) и алгоритмы Graph.
Spark на основе Hadoop
На следующей схеме показаны три способа создания Spark с компонентами Hadoop.
Ниже описаны три способа развертывания Spark.
Standalone- Автономное развертывание Spark означает, что Spark занимает место поверх HDFS (распределенной файловой системы Hadoop), а пространство для HDFS выделяется явно. Здесь Spark и MapReduce будут работать бок о бок, чтобы охватить все искровые задания в кластере.
Hadoop Yarn- Развертывание Hadoop Yarn означает просто запуск Spark на Yarn без предварительной установки или необходимого доступа root. Это помогает интегрировать Spark в экосистему Hadoop или стек Hadoop. Это позволяет другим компонентам работать поверх стека.
Spark in MapReduce (SIMR)- Spark в MapReduce используется для запуска Spark Job в дополнение к автономному развертыванию. С SIMR пользователь может запустить Spark и использовать его оболочку без какого-либо административного доступа.
Компоненты Spark
На следующем рисунке показаны различные компоненты Spark.
Ядро Apache Spark
Spark Core - это основной движок общего исполнения для платформы Spark, на которой построены все остальные функции. Он обеспечивает вычисления в памяти и ссылки на наборы данных во внешних системах хранения.
Spark SQL
Spark SQL - это компонент поверх Spark Core, который представляет новую абстракцию данных под названием SchemaRDD, которая обеспечивает поддержку структурированных и полуструктурированных данных.
Spark Streaming
Spark Streaming использует возможность быстрого планирования Spark Core для выполнения потоковой аналитики. Он принимает данные в мини-пакетах и выполняет преобразования RDD (устойчивые распределенные наборы данных) для этих мини-пакетов данных.
MLlib (библиотека машинного обучения)
MLlib - это распределенная структура машинного обучения, превосходящая Spark, благодаря архитектуре Spark на основе распределенной памяти. Согласно тестам, выполненным разработчиками MLlib для реализаций альтернативных наименьших квадратов (ALS). Spark MLlib в девять раз быстрее дисковой версии Hadoop.Apache Mahout (до того, как Mahout получил интерфейс Spark).
GraphX
GraphX - это распределенная среда обработки графов поверх Spark. Он предоставляет API для выражения вычислений графов, которые могут моделировать определяемые пользователем графы с помощью API абстракции Pregel. Он также обеспечивает оптимизированную среду выполнения для этой абстракции.