2014-09-14 21 views
42

Spark research paper предписывает новую распределенную модель программирования над классическим Hadoop MapReduce, требуя упрощения и увеличения производительности во многих случаях специально для машинного обучения. Тем не менее, материал для выявления internal mechanics на Resilient Distributed Datasets с Directed Acyclic Graph, как представляется, отсутствует в этой статье.Как DAG работает под обложками в RDD?

Должно ли быть лучше узнано, исследуя исходный код?

ответ

97

Даже я искал в Интернете, чтобы узнать, как искра вычисляет DAG из RDD и затем выполняет задачу.

На высоком уровне, когда любое действие вызывается на RDD, Spark создает DAG и отправляет его в планировщик DAG.

  • Планировщик DAG делит операторы на этапы задач. Этап состоит из задач, основанных на разделах входных данных. Операторы планировщика DAG вместе работают вместе. Напр. Многие операторы карты могут быть запланированы в один этап. Конечным результатом планировщика DAG является набор этапов.

  • Этапы передаются планировщику заданий. Планировщик задач запускает задачи через диспетчер кластера (Spark Standalone/Yarn/Mesos). Планировщик задач не знает о зависимостях этапов.

  • Работник выполняет задания на ведомом устройстве.

Давайте рассмотрим, как Spark создает DAG.

На высоком уровне существуют два преобразования, которые могут быть применены к RDD, а именно: Узкое преобразование и широкое преобразование. Широкие преобразования в основном приводят к границам сцены.

Узкое преобразование - не требует перетасовки данных по разделам. например, карта, фильтр и т.д ..

широкое преобразование - требует данных, которые будут перемешиваются, например, reduceByKey и т.д ..

Давайте возьмем пример подсчета, сколько появляются сообщения журнала на каждом уровне тяжесть,

Ниже файл журнала, который начинается с уровня важности,

INFO I'm Info message 
WARN I'm a Warn message 
INFO I'm another Info message 

и создайте следующий код SCALA извлечь то же самое,

Эта последовательность команд неявно определяет DAG объектов RDD (линия RDD), которые будут использоваться позже при вызове действия. Каждый RDD поддерживает указатель на одного или нескольких родителей вместе с метаданными о том, какой тип отношения он имеет с родителем. Например, когда мы вызываем val b = a.map() на RDD, RDD b сохраняет ссылку на своего родителя a, это линия.

Для отображения линии RDD Spark предоставляет метод отладки toDebugString().Например исполняющего toDebugString() на splitedLines RDD, будет выход следующее:

(2) ShuffledRDD[6] at reduceByKey at <console>:25 [] 
    +-(2) MapPartitionsRDD[5] at map at <console>:24 [] 
    | MapPartitionsRDD[4] at map at <console>:23 [] 
    | log.txt MapPartitionsRDD[1] at textFile at <console>:21 [] 
    | log.txt HadoopRDD[0] at textFile at <console>:21 [] 

Первая линия (снизу) показывает входной RDD. Мы создали этот RDD, позвонив sc.textFile(). Ниже приведен более схематический вид графика DAG, созданного с данного RDD.

RDD DAG graph

После DAG построена, Спарк планировщик создает физический план выполнения. Как упоминалось выше, планировщик DAG разбивает график на несколько этапов, этапы создаются на основе преобразований. Узкие трансформации будут сгруппированы (с трубкой) вместе в один этап. Таким образом, для нашего примера, Спарк создаст два исполнения этапа следующим образом:

Stages

планировщик DAG будет представлять этапы в планировщик задач. Количество поставленных задач зависит от количества разделов, присутствующих в текстовом поле. Пример Fox рассмотрим, что в этом примере у нас есть 4 раздела, тогда будет создано 4 набора заданий, которые будут представлены параллельно, если будет достаточно ведомых/ядер. Нижеприведенная схема иллюстрирует это более подробно:

Task execustion

Для получения более подробной информации я предлагаю вам пройти через следующие YouTube видео, где искровые создатели дают углубленные подробную информацию о DAG и плана выполнения и жизни.

  1. Advanced Apache Spark- Sameer Farooqui (Databricks)
  2. A Deeper Understanding of Spark Internals - Aaron Davidson (Databricks)
  3. Introduction to AmpLab Spark Internals
3

НАЧАЛУ Spark 1.4 визуализация данных была добавлена ​​с помощью следующих трех компонентов, где также обеспечивают четкое графическое представление DAG.

  • вид Хронология событий Спарк

  • Execution DAG

  • Визуализация статистики Streaming Спарк

Обратитесь к link для получения дополнительной информации.

 Смежные вопросы

  • Нет связанных вопросов^_^