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