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