Spark — это быстрый распределенный аналитический вычислительный движок для крупномасштабной обработки данных.

Spark позволяет обмениваться данными между этапами обработки посредством обработки данных в памяти конвейера данных.

Основные понятия

Задание. Фрагмент кода, который считывает некоторые входные данные из HDFS или локально, выполняет некоторые вычисления с данными и записывает выходные данные.

Этапы. Задания делятся на этапы. Этапы классифицируются как карта и этап уменьшения. Этапы разделены на основе границ вычислений, все вычисления не могут быть выполнены на одном этапе, поэтому существует много этапов.

Задачи. На каждом этапе есть задача, по одной задаче на раздел. Одна задача выполняется на одном разделе данных на одном исполнителе.

DAG: это означает ориентированный ацилический граф. при наличии контекста это операторы DAG.

Исполнитель: процесс, ответственный за выполнение задачи.

Мастер: машина, на которой работает программа-драйвер.

Подчиненный: машина, на которой выполняется программа-исполнитель.

Spark используется в:

Пакетная обработка : используется для обработки больших наборов данных, как правило, для выполнения больших заданий по уменьшению карты.

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

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

Интерактивный: используется при исследовании данных, так как большие блоки данных находятся в памяти и из-за очень быстрого отклика искры.

Режим работы Spark

  1. один единственный режим
    2.автономный на одной машине
    3.два распределенных режима на кластере машин
    менеджер кластера:Yarn (диспетчер распределенных ресурсов Hadoop), Mesos: менеджер кластера с открытым исходным кодом

Компоненты Spark:

Драйвер искры

Отдельный процесс для выполнения приложения
Создайте контекст искры для планирования выполнения задания
Согласуйте с менеджером кластера

Исполнитель

Запуск задач, запланированных драйвером
Сохранение результатов в памяти, на диске, вне кучи
Взаимодействие с системой хранения

Диспетчер кластера
Mesos
YARN
Автономный Spark

Драйвер Spark содержит множество компонентов для преобразования пользовательской программы в реальные задания, выполняемые в кластере.

Контекст Spark: представляет собой подключение к искровому кластеру, используется для создания RDD, аккумуляторов и широковещательных переменных в кластере.

DAGScheduler: вычисляет этапы DAG для каждого задания и отправляет их в TaskScheduler, определяет предпочтительное расположение задачи и находит минимальное расписание для выполнения задания.

TaskScheduler: отвечает за отправку задачи в кластер, выполнение задач, повторную попытку в случае сбоя.

Бэкенд планировщика: интерфейс бэкенда, используемый для планирования систем, которые позволяют подключать другую библиотеку или фреймворк.

Интерфейсы Spark

1.Scala
2.Java
3.Python
4.R

Библиотеки Spark

SparkSQL: это предоставляет возможность, подобную SQL, запрашивать структурированные данные и интерактивно исследовать большие наборы данных.

SparkMLLIB: предоставляет основные алгоритмы и платформу конвейера для машинного обучения.

Spark Streaming: предназначен для анализа данных в режиме, близком к реальному времени, с использованием микропакетов и скользящих окон для входящих потоков данных.

Spark GraphX: это для обработки графов и вычислений для сложных связанных объектов и отношений.

Рабочая искра:

У него небольшая кодовая база, но система разделена на множество слоев. Каждый уровень несет ответственность. Слои независимы друг от друга.

Spark создает граф оператора, когда пользователь запускает какое-либо действие, граф отправляется. Планировщик DAG делит оператора на этапы.

Этапы передаются планировщику задач. Запуск планировщика задачhc

СДР:

  • он представляет собой устойчивую распределенную систему.
  • Это неизменяемая распределенная коллекция наборов объектов.
  • Каждый RDD разделен на несколько разделов, которые могут быть вычислены на разных узлах кластера.