Количество баллов и льгот Исполнителя или иное - Искра - PullRequest
0 голосов
/ 25 января 2019

Запрашиваются некоторые пояснения во время выполнения.

В другом месте, где я читал, было указано, что Spark Executor должен иметь только одно выделенное ядро.Однако мне интересно, действительно ли это всегда так.Читая различные SO-вопросы и тому подобное, а также Карау, Венделл и др., Становится ясно, что есть равные и противоположные эксперты, которые утверждают, что в некоторых случаях следует указывать больше баллов на исполнителя, но обсуждение, как правило, болеетехнический, чем функциональный.Другими словами, отсутствуют функциональные примеры.

  • Насколько я понимаю, раздел RDD или DF, DS обслуживается одним исполнителем.Хорошо, не проблема, имеет смысл.Итак, как раздел может извлечь выгоду из нескольких ядер?

    • Если у меня есть карта , за которой, скажем, фильтр , этоне две задачи, которые можно чередовать - как в Informatica, насколько я понимаю, они слиты воедино.Если так, то каков пример выгоды от назначенного Исполнителя, выполняющего больше ядер?

    • От JL: Другими (более техническими) словами, Задача является вычислениемдля записей в разделе СДР на этапе СДР в задании Spark .Что это означает функционально говоря, на практике?

  • Кроме того, может ли исполнитель быть распределен, если не все ядра могут быть получены?Я предполагаю, что есть период ожидания, и через некоторое время он может быть выделен в более ограниченном объеме.Верно?

  • Из высоко оцененного ответа SO, Что такое задача в Spark?Как работник Spark выполняет файл jar? , указано следующее: Когда вы создаете SparkContext, каждый работник запускает исполнителя .Из другого вопроса SO: Когда создается SparkContext, каждый рабочий узел запускает исполнителя.

    Не уверен, что я следую этим утверждениям.Если Spark не знает заранее количество разделов и т. Д., Зачем выделять Исполнителей так рано?

Я спрашиваю об этом, так как даже этот превосходный пост Как этапы делятся на задачи в Spark? не дает практического примера нескольких ядер на исполнителя.Я могу четко следовать этому посту, и это соответствует моему пониманию 1 ядра на исполнителя.

1 Ответ

0 голосов
/ 25 января 2019

Насколько я понимаю, раздел (...) обслуживается одним исполнителем.

Это верно, однако обратное неверно - один исполнитель может обрабатывать несколько разделов /задач на нескольких этапах или даже на нескольких RDD).

, в чем же пример преимущества от назначенного исполнителя, выполняющего больше ядер?

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

Вторичное приложение применяет несколько потоков к одному разделу, когдапользователь вызывает многопоточный код.Однако это не то, что делается по умолчанию ( Количество процессоров на задачу в Spark )

См. Также Каковы преимущества запуска нескольких задач Spark в одной и той же JVM?

Если Spark заранее не знает количество разделов и т. Д., Зачем выделять Исполнителей так рано?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...