В этой статье мы поговорим про компоненты, которые входят в популярный Big Data фреймворк Apache Spark, составляя его унифицированный стек. Благодаря им Spark обладает широкими функциональными возможностями и способен поддерживать множество вариантов использования. Читайте далее, какие компоненты делают Spark настолько мощным средством обработки больших данных (Big Data).
Что представляет собой стек Apache Spark: главные компоненты
Компоненты Спарк тесно интегрированы друг с другом, предоставляя разработчику возможность объединять их, подобно коллекции библиотек в программном проекте. Это дает возможность библиотекам извлекать выгоды от улучшений в слоях более низкого уровня. Например, когда в ядро Спарк вносятся какие-либо оптимизации, то библиотеки, поддерживающие SQL и машинное обучение, автоматически увеличивают производительность такого кода. Итак, в стек Спарк входят следующие компоненты:
- основной функционал Ядра Спарк;
- пакет поддержки SQL-запросов Spark SQL;
- обработчик потоковых данных Spark Streaming;
- библиотека для машинного обучения MLlib;
- библиотека для работы с графами GraphX;
- компоненты Hadoop YARN, Apache Mesos, Standalone Scheduler, обеспечивающие распределенную работу на множестве кластерных узлов.
Как работает каждый из вышеперечисленных компонентов, мы рассмотрим далее.
Spark Core
Основной задачей Ядра Спарк является реализация основных функциональных возможностей фреймворка Спарк, с помощью которых осуществляется планирование заданий, управление памятью, обработка ошибок, а также взаимодействие с системами хранения данных. Ядро Спарк также служит основой API устойчивых распределенных наборов данных (Resilient Distributed Datasets), которая является базовой абстракцией и структурой данных в Спарке. Наборы RDD представляют собой коллекции элементов, которые распределяются в пределах некоторого множества вычислительных узлов, а также поддерживают параллельную обработку. В техническом плане Spark Core представляет собой большую библиотеку с множеством функций для управления такими коллекциями.
Spark SQL
Spark SQL – это пакет для работы и анализа структурированных данных, который позволяет извлекать данные с помощью инструкций на языке запросов SQL и его диалекте Hive Query Language (HQL). Spark SQL также поддерживает множество популярных Big Data форматов, таких как Hive, Parquet и JSON. Помимо интерфейса SQL, компонент Spark SQL позволяет смешивать в одном приложении запросы на языке SQL с программными конструкциями на Python, JAVA и Scala, которые поддерживаются абстракцией RDD. Spark SQL позволяет анализировать большие коллекции данных с помощью стандартного механизма SQL-запросов, который знаком каждому аналитику. Spark SQL отлично интегрируется с любой СУБД посредством интерфейса соединения.
Spark Streaming
Фреймворк позволяет вести обработку потоковых данных в режиме онлайн благодаря компоненту Spark Streaming. Источниками таких данных могут служить файлы журналов, которые заполняются действующими веб-серверами, а также очереди сообщений, посылаемые пользователями различных веб-служб. Spark Streaming имеет API для управления потоками данных, который похож на RDD, поддерживаемый ядром (Core). Это очень облегчает изучение самого проекта и различных приложений обработки данных, которые хранятся в памяти. Spark Streaming отлично интегрируется с Apache Kafka, позволяя строить потоковые data pipelines, например, в системах интернета вещей (IoT, Internet of Things) и прочих бизнес-приложениях.
MLlib
Библиотека MLlib делает возможным реализацию механизмов машинного обучения (Machine Learning). MLlib поддерживает множество алгоритмов машинного обучения, включая классификацию (classification), регрессию (regression), кластеризацию (clustering), совместную фильтрацию (collaborative filtration) и прочие популярные методы. Этот компонент также позволяет разрабатывать нестандартные алгоритмы машинного обучения, в т.ч. на базе нейросетей. Все алгоритмы могут свободно реализовываться в пределах кластера.
GraphX
GraphX – это библиотека, отвечающая за обработку графов и выполнение параллельных вычислений. Эта библиотека отлично дополняет RDD API фреймворка Спарк тем, что предоставляет возможность создания ориентированных графов с произвольными свойствами. GraphX также позволяет управлять графами через выполнение специфических операций, таких как, например, subgraph и mapVertices. На практике GraphX активно используется для ведения статистики в социальных сетях, например, если требуется найти наиболее популярных или активных пользователей.
Диспетчеры кластеров
Внутренняя реализация Спарк обеспечивает весьма эффективное масштабирование от одного до нескольких тысяч узлов. Такая гибкость достигается благодаря диспетчерам кластеров (cluster managers):
- Hadoop YARN, который отвечает за распределение системных ресурсов;
- Apache Mesos, обеспечивающий изоляцию ресурсов кластера;
- Standalone Scheduler, который можно использовать на множестве машин на начальном этапе установки для планирования задач.
Комбинация всех вышерассмотренных компонентов в рамках одного фреймворка делает Спарк полезным для каждого специалиста в области Big Data, от Data Scientist’а до разработчика распределенных приложений. В следующей статье мы расскажем про коллекции данных RDD во фреймворке Спарк.
Освоить Спарк на профессиональном уровне для практического использования в своих проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Apache Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.