Припустимо для наступного, що у кожний момент часу виконується лише одне завдання Spark.
Що я отримую поки що
Ось що я розумію, що відбувається в Spark:
- Коли а
SparkContext
створюється, кожен вузол робітника запускає виконавця. Виконавці - це окремі процеси (JVM), які підключаються назад до драйверної програми. Кожен виконавець має банку програми драйвера. Вийшовши з водія, відключає виконавців. Кожен виконавець може мати деякі розділи. - Коли завдання виконується, створюється план виконання відповідно до графіка рядків.
- Завдання для виконання розбивається на етапи, де етапи містять стільки сусідніх (у графіку рядків) перетворень та дій, але ніяких переміщень. Таким чином етапи розділяються перемичками.
Я розумію, що
- Завдання - це команда, що надсилається від драйвера виконавцю шляхом серіалізації об'єкта функції.
- Виконавець десеріалізує (за допомогою драйвера) команду (завдання) та виконує її на розділі.
але
Питання (и)
Як я розділити етап на ті завдання?
Конкретно:
- Чи задачі визначаються перетвореннями та діями чи можуть бути декілька перетворень / дій у завданні?
- Чи визначаються завдання розділом (наприклад, одне завдання на етап на розділ).
- Чи задачі визначаються вузлами (наприклад, одне завдання на етап на вузол)?
Що я думаю (лише часткова відповідь, навіть якщо це правильно)
У https://0x0fff.com/spark-architecture-shuffle , переміщення пояснюється зображенням
і у мене складається враження, що це правило
кожен етап розбивається на # завдання на кількість розділів, не враховуючи кількість вузлів
Для свого першого зображення я б сказав, що у мене буде 3 завдання на карті та 3 завдання для зменшення.
Щодо зображення з 0x0fff, я б сказав, що існує 8 завдань на карті та 3 завдання зменшення (якщо припустити, що є лише три помаранчеві та три темно-зелені файли).
Відкривайте запитання в будь-якому випадку
Це правильно? Але навіть якщо це правильно, на всі мої запитання вище не всі відповіді, оскільки це все ще відкрито, чи багато операцій (наприклад, декілька карт) є в межах одного завдання, або розділені на одне завдання на одну операцію.
Що кажуть інші
Що таке завдання в Spark? Як працівник Spark виконує файл jar? і як планувальник Apache Spark розділяє файли на завдання? подібні, але я не відчував, що там на моє запитання чітко відповіли.