Как сбалансировать количество исполнителей и количество ядер исполнителей в Spark - PullRequest
0 голосов
/ 10 июля 2020

Если я хочу запустить приложение со 100 ядрами, как мне настроить number-of-executors и executor-cores для достижения максимальной производительности? 100 исполнителей с 1 ядром лучше или 20 исполнителей с 5 ядрами?

Из этой статьи я знаю, что если в одном исполнителе работает слишком много ядер, это может оказать давление на HDFS IO. Однако, если я использую только одно ядро ​​для каждого исполнителя, где будет много исполнителей, и вызываю много сетевого ввода-вывода из-за операций перемешивания / широковещания.

Мне интересно, как заблокировать между number-of-executors и executor-cores. Мои вопросы:

  1. Возможно ли, чтобы я установил постоянный номер ядра исполнителя? Например, я всегда беру 4 ядра с 8-ядерной машины. Если я не могу, какие еще условия мне следует принять во внимание?

  2. Однако при запуске Spark на YARN приложения Spark не всегда могут получить запрошенное количество ресурсов. Учитывая предыдущий пример, если я выберу 100 исполнителей с 1 ядром, я могу не получить 100 исполнителей, поэтому, возможно, мое приложение будет в 5 раз медленнее. Однако, если я выберу 20 исполнителей с 5 ядрами, я могу получить ровно 20 исполнителей, так что мое приложение может работать быстрее. Как тогда выбрать правильные number-of-executors и executor-cores?

...