Как Apache Spark собирает и координирует результаты от исполнителей - PullRequest
0 голосов
/ 04 ноября 2019

Отправка этого вопроса, чтобы узнать, как Apache Spark собирает и координирует результаты от исполнителей.

Предположим, я работаю с 3 исполнителями. Мой DataFrame разделен и работает на этих 3 исполнителей. Итак, теперь, когда я выполняю действие count () или collect () в DataFrame, как spark будет координировать результаты этих 3 исполнителей?

val prods = spark.read.format("csv").option("header", "true").load("testFile.csv")

prods.count(); // How spark collect data from three executors? Who will coordinate the result from different executors and give it to driver?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Оки, какая часть тебе не понятна?

Позвольте мне сделать это обобщенно, программа клиент / драйвер запускает и запрашивает у главного локального / автономного мастера / пряжи менеджера кластеров, что программа драйвера хочет, чтобы ресурсы выполняли задачи, поэтому выделите драйвер для рабочих. Менеджер кластера, в свою очередь, распределяет работников, запускает исполнителей на рабочих узлах и передает клиентской программе информацию о том, как вы можете использовать этих работников для выполнения своей работы. Так что данные делятся на каждом рабочем узле и выполняются параллельные задачи / преобразования. ) или count () вызывается (я предполагаю, что это последняя часть работы). Затем каждый исполнитель возвращает свой результат обратно драйверу.

0 голосов
/ 04 ноября 2019

prods.count ();// Как спарк собирает данные у трех исполнителей? Кто будет координировать результат от разных исполнителей и передавать его драйверу?

Когда вы выполняете spark-submit, вы указываете master, клиентская программа (драйвер) запускается на пряже, если пряжа указана master или local, если указана локальная,https://spark.apache.org/docs/latest/submitting-applications.html

Поскольку вы добавили тег yarn в вопрос, я предполагаю, что вы имеете в виду yarn-url, поэтому yarn запускает клиентскую программу (драйвер) на любом из узлов кластера и регистрирует и назначает работников (исполнителей)к драйверу, так что задача должна выполняться на каждом узле. Каждое преобразование / действие выполняется параллельно на каждом рабочем узле (исполнитель). Как только каждый узел завершит работу, они возвращают туда результаты, приводимые к программе драйвера.

...