2017-02-22 86 views
0

Я запускаю прямой поток искры от kafka, где мне нужно запустить много параллельных заданий, чтобы обрабатывать все данные во времени. В искры вы можете установить spark.streaming.concurrentJobs на несколько одновременных заданий, которые вы хотите запустить.Spark Прямой поток параллельного ограничения работы

Что я хочу знать, это логичный способ определения количества параллельных заданий, которые я могу выполнять в пределах данной среды. Что касается вопросов конфиденциальности в моей компании, я не могу рассказать о спецификациях, которые у меня есть, но то, что я хотел бы знать, - какие спецификации имеют значение для определения предела и почему?

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

ответ

1

Чтобы проверить разные количества одновременных заданий и посмотреть общее время выполнения, это самый надежный метод. Тем не менее, я полагаю, что наилучшее число примерно равно значению Runtime.getRuntime().availableProcessors();

Итак, мой совет - начать с этого количества доступных процессоров, затем увеличить и уменьшить его на 1,2 и 3. Затем составить график (выполнение время против количества заданий), и вы увидите оптимальное количество заданий.

+0

Я использовал ваше предложение о печати 'Runtime.getRuntime(). AvailableProcessors();'. Я получил номер, который был выше, чем мне нужно, но было хорошо знать мои верхние границы. После бесчисленных тестов я пришел к тому, что имело смысл. Благодарю. – user3124181