2017-02-01 4 views
0

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

Я использую искры динамического распределение, когда я использовал spark.dynamicAllocation.minExecutors = 10 на внезапный всплеск искры данных открывает новые исполнитель очень медленно приводит в длинных очередях

, когда я изменил spark.dynamicAllocation.minExecutors = 200 номер лагера на внезапном порыве он открывает новые исполнители очень быстро, и очередь может прояснить

Мой вопрос заключается в том, что мы должны установить это для высокой ценности для такой ситуации.

ответ

0

Vipin,

При установке динамического распределения в искре, как я вижу, что вы включите его и установить мин исполнителей. Но, когда вам нужно 200 исполнителей быстрее, распределение имеет одну конфигурацию с именем spark.dynamicAllocation.schedulerBacklogTimeout, для которой по умолчанию используется 1 с таймаутом.

Это означает, что после 1 секунды, если вы не выполнили задачу, она выделит больше исполнителей.

Согласно documentation в saprk, который говорит: запросы

Спарк исполнителей в раундах. Фактический запрос запускается, когда есть ожидающие задачи для spark.dynamicAllocation.schedulerBacklogTimeout секунд, а затем запускается снова каждый spark.dynamicAllocation.sustainedSchedulerBacklogTimeout секунд после этого, если очередь ожидающих задач сохраняется. Кроме того, количество исполнителей, запрошенных в каждом раунде, экспоненциально увеличивается с предыдущего раунда. Например, приложение добавит 1 исполнителя в первом раунде, а затем 2, 4, 8 и т. Д. Исполнителей в последующих раундах.

Таким образом, для каждого seccond Spark выделяют 2^n для n секунд задержки. Чтобы связаться с исполнителем 200, вам нужно подождать не менее 8 секунд, чтобы попросить исполнителей прясть. И еще несколько секретов, чтобы решить это.

Возможно, если вы поднимете количество ядер, это поможет вам. Но если вы используете полные ядра каждого узла ... Ну, это не решение.

+0

Является ли внедрение открытия исполнителей вроде 1 2 4 8 частным? как моя проблема может быть решена, если я смогу сделать это 10 20 30, так как моя система открывает новый vm, как это – vipin

+0

Ну, я проверял код. Кажется, это непринужденно. См. Ссылку: https://github.com/apache/spark/blob/6ee28423ad1b2e6089b82af64a31d77d3552bb38/core/src/main/scala/org/apache/spark/ExecutorAllocationManager.scala#L309 –