Стадии искры - Узнайте о типах и преимуществах Spark Stages

Содержание:

Anonim

Обзор этапов искры

Этап в процессе выполнения - не что иное, как уровень, через который должна пройти каждая из задач. Вся искровая работа разделена на множество этапов для эффективной обработки данных. Каждое задание выполняется в отдельном разделе.

Каждый раз, когда приложение Spark Job отправляется в Spark пользователем, драйвер Spark принимает его и определяет различные виды действий / преобразований, присутствующих в приложении. Кроме того, эти операции будут расположены в блок-схеме, называемой DAG. DAG (направленный ациклический граф) создается всякий раз, когда в СДР вызывается действие или преобразование, которое, в свою очередь, вызывает DAGScheduler.

Значение DAG заключается в следующем:

  • Направлено: все узлы связаны друг с другом, создавая ациклический граф. Последовательность этого определяется действиями, вызываемыми в СДР.
  • Ациклический: узлы не связаны как циклический цикл, т. Е. Если действие или преобразование было когда-то выполнено, невозможно вернуть его к первоначальному значению.
  • График . Весь шаблон, образованный ребрами и вершинами, расположенными вместе в определенном шаблоне, называется графиком. Вершины - это не что иное, как RDD, а ребра - это действия, вызываемые RDD.

DAGScheduler - это тот, который разделяет этапы на ряд задач. Затем DAGScheduler передает информацию о стадии менеджеру кластера (автономный YARN / Spark), который запускает планировщик задач для запуска задач. Драйвер Spark преобразует логический план в физический план выполнения. Задания Spark выполняются методом конвейерной обработки, где все задачи преобразования объединяются в один этап.

Трансформации

Есть 2 вида преобразований:

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

Пример: map () и filter ()

2. Широкие преобразования : это преобразования, которые требуют перестановки между различными разделами. Следовательно, для связи между разными разделами требуются разные этапы.

Пример: ReduceByKey

Давайте рассмотрим пример для лучшего понимания того, как это работает.

Пример: в этом примере мы увидим, как работает простой подсчет слов с использованием Spark DAGScheduler.

  • val data = sc.textFile («data.txt»)

Результат: data: org.apache.spark.rdd.RDD (String) = data.txt MapPartitionsRDD (46) в textFile по адресу: 24

Сначала выполняется операция textFile для чтения заданного входного текстового файла из местоположения HDFS.

  • data.flatMap (_. split (”“)). map (i => (i, 1)). reduByKey (_ + _). collect

Результат: res21: Array ((String, Int)) = Array ()

Затем выполняется операция flatMap, чтобы разбить строки во всем входном файле на разные слова. Затем выполняется операция сопоставления для формирования пар (ключ, значение), таких как (слово, 1), для каждого из слов. И функция reduByKey вызывается, чтобы найти сумму отсчетов для каждого слова. Наконец, коллективные действия дадут конечный результат, собрав все данные.

Во время этой программы Spark создает 2 этапа, потому что здесь выполняется преобразование. Когда операция преобразования выполнена, необходимо выполнить перемешивание, поскольку данные должны перемещаться между двумя или более различными разделами. Следовательно, для этого создается этап, а затем создается еще один отдельный этап для задачи преобразования.

Также внутренне эти этапы будут разделены на задачи. В этом примере каждый этап разделен на 2 задачи, поскольку существует 2 раздела. Каждый раздел выполняет отдельную задачу.

Типы Стадий Искры

Вот два типа ступеней искры, приведенные ниже

1. ShuffleMapStage

Это в основном промежуточный этап в процессе выполнения DAG. Выход этой ступени используется в качестве входа для следующей ступени. Вывод этого в виде выходных файлов карты, которые могут быть позже использованы путем сокращения задачи. ShuffleMapStage считается готовым, когда доступны все его выходные данные карты. Иногда места вывода могут отсутствовать в случаях, когда разделы либо потеряны, либо недоступны.

Этот этап может содержать много операций конвейера, таких как map () и filter () перед выполнением тасования. Внутренние регистры outputLocs и _numAvailableOutputs используются ShuffleMapStage для отслеживания количества выходных данных карты случайного типа. Один ShuffleMapStage может широко использоваться в различных заданиях.

2. ResultStage

Как следует из названия, это последний этап задания Spark, которое выполняет операцию на одном или нескольких разделах RDD для вычисления своего результата. Инициализация внутренних реестров и счетчиков выполняется ResultStage.

DAGScheduler отправляет отсутствующие задачи, если таковые имеются, в ResultStage для вычисления. Для вычислений требуются различные обязательные параметры, такие как stageId, stageAttempId, широковещательная переменная сериализованной задачи, раздел, предпочтительные TaskLocations, outputId, некоторые локальные свойства, TaskMetrics этой конкретной стадии. Некоторые из необязательных параметров: Идентификатор задания, Идентификатор приложения и Идентификатор попытки приложения.

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

Ниже приведены различные преимущества Spark Stages:

1. Динамическое распределение исполнителей

Увидев временную шкалу Spark Job Event, мы видим, что распределение исполнителей происходит динамически. Это означает, что исполнители вызываются из кластера в зависимости от рабочей нагрузки в ходе выполнения задачи. Затем он возвращается в кластер, как только его работа завершена. Это экономит память выделения ресурсов и позволяет другим приложениям, работающим в том же кластере, повторно использовать исполнителей. Следовательно, общее использование кластера будет расти и будет оптимальным.

2. Кеширование

СДР кэшируются во время операций, выполняемых над ними на каждом этапе, и сохраняются в памяти. Это полезно для экономии вычислительного времени, когда конечный результат требует повторного считывания того же RDD из HDFS.

3. Параллельное исполнение

Задания Spark, которые не зависят друг от друга, выполняются параллельно, если только и до тех пор, пока не потребуется перестановка, или если вход одного каскада зависит от его предыдущего вывода.

4. Визуализация DAG

Это очень полезно в случаях сложных вычислений, когда задействовано много операций и их зависимостей. Видя эту визуализацию DAG, можно легко проследить поток и определить блокировки производительности. Кроме того, можно увидеть каждую из задач, выполняемых каждым этапом, нажав на этапы, показанные в этой визуализации. В этом расширенном представлении показаны все детали СДР, которые относятся к этой стадии.

5. Отказоустойчивость

Из-за операции кэширования, выполняемой на RDD, DAG будет иметь запись каждого действия, выполненного над ними. Следовательно, предположим, что в любом случае СДР теряется, его можно легко получить с помощью DAG. Диспетчер кластеров может использоваться для идентификации раздела, в котором он был потерян, и тот же RDD может быть снова помещен в тот же раздел для восстановления потери данных.

Благодаря вышеупомянутым преимуществам Apache Spark широко используется вместо ранее использовавшегося MapReduce. Этапы Spark - это не что иное, как расширенная версия MapReduce. Так как MapReduce требовал многократного считывания и записи данных в HDFS, был представлен Spark, который выполняет эти действия в своей памяти.

Вывод

Отсюда можно сделать вывод, что этапы Spark более эффективны из-за их вычислений в памяти, повышенной скорости обработки даже для итеративной обработки.

Рекомендуемые статьи

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

  1. Как установить Spark
  2. Spark Streaming
  3. Карьера в Искре
  4. Спарк Интервью Вопросы
  5. Обзор и 6 основных компонентов Spark