Іскрові етапи - Дізнайтеся про типи та переваги іскрових етапів

Зміст:

Anonim

Огляд іскрових етапів

Етап у процесі виконання - це не що інше, як рівень, через який має пройти кожне із завдань. Весь іскровий завдання розділений на багато етапів для ефективної обробки даних. Кожне завдання виконується в окремому розділі.

Кожен раз, коли користувач подає заявку на завдання іскри на Spark, драйвер Spark приймає її та визначає різні види дій / перетворень, наявних у програмі. Далі ці операції будуть розташовані у діаграмі потоків, що називається DAG. DAG (спрямований ациклічний графік) створюється кожного разу, коли викликається дія або перетворення на RDD, що, в свою чергу, викликає DAGScheduler.

Сенс DAG полягає в наступному:

  • Спрямовано: Усі вузли з'єднані один з одним, створюючи ациклічний графік. Послідовність цього визначається діями, викликаними в RDD.
  • Ациклічний: вузли не пов'язані як циклічний цикл, тобто якщо дія або перетворення було зроблено один раз, неможливо повернути його до початкового значення.
  • Графік: Весь візерунок, утворений ребрами і вершинами, розташованими разом за певним малюнком, називається графіком. Вершини - це не що інше, як RDD, а краї - це дії, викликані в RDD.

DAGScheduler - це той, хто розділяє етапи на ряд завдань. Потім DAGScheduler передає інформацію про стадії менеджеру кластерів (YARN / Spark автономно), який запускає планувальник завдань для виконання завдань. Драйвер іскри перетворює логічний план у фізичний план виконання. Завдання іскри виконуються в конвеєрному методі, де всі завдання перетворення поєднуються в один етап.

Трансформації

Є два види перетворень, які відбуваються:

1. Вузькі перетворення : Це перетворення, які не потребують процесу переміщення. Ці дії можуть бути виконані в один етап.

Приклад: map () та filter ()

2. Широкі перетворення : Це перетворення, які потребують переміщення по різних перегородках. Отже, для створення комунікацій між різними перегородками потрібно створити різні етапи.

Приклад: ReduceByKey

Візьмемо приклад для кращого розуміння того, як це працює.

Приклад: У цьому прикладі ми побачимо, як працює просте число слів за допомогою Spark DAGScheduler.

  • val data = sc.textFile ("data.txt")

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

Спочатку виконується операція textFile для зчитування заданого вхідного текстового файлу з місця розташування HDFS.

  • data.flatMap (_. split ("")). map (i => (i, 1)). reduByKey (_ + _). збирати

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

Далі виконується операція flatMap для розділення рядків у вхідному файлі на різні слова. Потім виконується операція з картою для формування (ключ, значення) пар типу (слово, 1) для кожного з слів. І викликається функція reduByKey, щоб знайти суму підрахунків для кожного слова. Нарешті, колективна акція дасть кінцевий результат, зібравши всі дані.

Під час цієї програми Спарк створює 2 етапи, оскільки тут проводиться перетворення. Поки операція перетворення виконується, перетасування потрібно проводити, оскільки дані потрібно переміщувати між 2 або більше різними розділами. Отже, для цього створюється етап, а потім створюється ще один єдиний етап для завдання перетворення.

Також внутрішньо ці етапи будуть розділені на завдання. У цьому прикладі кожен етап розділений на 2 завдання, оскільки існують 2 розділи. Кожен розділ виконує індивідуальне завдання.

Типи іскрових етапів

Ось два типи іскрових етапів, наведені нижче

1. ShuffleMapStage

Це в основному проміжна стадія в процесі виконання DAG. Вихід цього етапу використовується як вхід для подальших етапів. Вихід цього виду складається у вигляді вихідних файлів карти, які згодом можуть бути використані шляхом зменшення завдання. ShuffleMapStage вважається готовим, коли всі його вихідні дані доступні. Іноді місця виводу можуть бути відсутніми у випадках, коли розділи або втрачені, або недоступні.

Цей етап може містити багато операцій трубопроводу, таких як map () та filter () перед виконанням перетасовки. ShuffleMapStage використовує ShuffleMapStage для відстеження кількості виходів карт перетасованих даних з внутрішніх реєстрів.Locs та _numAvailableOutputs. Один ShuffleMapStage можна використовувати в різних роботах.

2. ResultStage

Як випливає з самої назви, це завершальний етап у роботі Spark, який виконує операцію на одному або декількох розділах RDD для обчислення його результату. Ініціалізація внутрішніх реєстрів та лічильників проводиться ResultStage.

DAGScheduler подає пропущені завдання, якщо такі є в ResultStage для обчислення. Для обчислення потрібні різні обов'язкові параметри, такі як stageId, stageAttempId, змінна трансляція серіалізованої задачі, розділ, переважні завдання TaskLocations, outputId, деякі локальні властивості, TaskMetrics цього конкретного етапу. Деякі необхідні необов'язкові параметри - це Job Id, Id програми та Id спроби програми.

Переваги іскрових етапів

Нижче наведено різні переваги Іскрових Етапів:

1. Динамічний розподіл виконавців

Переглядаючи шкалу подій Spark Job, ми можемо побачити, що розподіл виконавців здійснюється динамічно. Це означає, що виконавці викликаються з кластеру залежно від завантаженості роботи під час виконання завдання. Потім він відпускається назад в кластер, як тільки його робота виконується. Це економить пам'ять розподілу ресурсів і дозволяє іншим програмам, що працюють на цьому ж кластері, повторно використовувати виконавців. Отже, загальне використання кластерів зросте та стане оптимальним.

2. Кешування

RDD кешуються під час операцій, що виконуються над ними на кожному етапі, і зберігаються в пам'яті. Це корисно для економії обчислювального часу, коли для кінцевого результату потрібно повторити читання тих же RDD з HDFS.

3. Паралельне виконання

Завдання іскри, незалежні одна від одної, виконуються паралельно, за винятком випадків, доки не буде потрібно перетасування або введення одного етапу не залежить від його попереднього виходу.

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

Це дуже корисно у випадках складних обчислень, де задіяно багато операцій та їх залежностей. Побачивши цю візуалізацію DAG, можна легко простежити потік та виявити блокування продуктивності. Також можна побачити кожне із завдань, що виконуються кожним етапом, клацнувши на етапах, показаних у цій візуалізації. У цьому розгорнутому представленні показані всі деталі RDD, які належать до цього етапу.

5. Відмовостійкість

Через операцію кешування, виконану на RDD, DAG матиме запис про кожну дію, виконану на них. Отже, припустимо, що в будь-якому випадку RDD втрачено, його можна легко отримати за допомогою DAG. Менеджер кластерів може використовуватися для ідентифікації розділу, на якому він був загублений, і той самий RDD може бути розміщений знову в тому ж розділі для відновлення втрат даних.

Через вищезазначені переваги Apache Spark широко використовується замість раніше використовуваного MapReduce. Іскрові етапи - це не що інше, як розширена версія MapReduce. Оскільки MapReduce вимагав зчитування даних та запису їх у HDFS кілька разів, було введено Spark, який робить ці дії у своїй пам'яті.

Висновок

Звідси можна зробити висновок, що іскрові етапи є більш ефективними через обчислення в пам'яті, збільшення швидкості обробки навіть для ітеративної обробки.

Рекомендовані статті

Це посібник із іскрових етапів. Тут ми обговорюємо типи трансформації та типи та переваги іскрових ступенів. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Як встановити Spark
  2. Іскрова стрічка
  3. Кар'єра в іскрі
  4. Питання інтерв'ю
  5. Огляд та основні 6 компонентів іскри