Какая стратегия лучше всего подходит для настройки параметров приложения искры? - PullRequest
0 голосов
/ 24 января 2019

Я так сбиваюсь с тем, какой подход мне следует использовать для настройки параметров приложения spark.

Давайте рассмотрим следующую конфигурацию кластера: 10 узлов, 16 ядер на узел и 64 ГБ ОЗУ на узел (пример из https://spoddutur.github.io/spark-notes/distribution_of_executors_cores_and_memory_for_spark_application.html0

  1. Исходя из вышеупомянутых рекомендаций, давайте присвоим 5 core per executors => --executor-cores = 5 (для хорошей пропускной способности HDFS)
  2. Оставьте 1 core per node для демонов Hadoop / Yarn => Количество ядер доступно на узел =16-1 = 15. Итак, общее количество доступных ядер в кластере = 15 x 10 = 150
  3. Количество доступных исполнителей = (общее количество ядер / num-core-per-executor) = 150/5 = 30
  4. Оставляя 1 исполнителя для ApplicationManager => --num-executors = 29
  5. Количество исполнителей на узел = 30/10 = 3
  6. Память на исполнителя = 64 ГБ / 3 = 21 ГБ
  7. Подсчет кучи служебных данных = 7% от 21 ГБ = 3 ГБ. Таким образом, фактический --executor-memory = 21 - 3 = 18GB

В результате рекомендуемая конфигурация будет: 29 исполнителей, 18 ГБ памяти каждый и 5каждый ядро ​​

Рассмотрим другой примергде подтверждение кластера: 6 узлов, 25 узлов ядра и 125 ГБ памяти на узел (пример из https://researchcomputing.princeton.edu/computational-hardware/hadoop/spark-memory)

рекомендуемая конфигурация; - num-executors 30 --executor-cores 4 --executor-memory 24G.

Вопрос: если мы используем правила, применяемые в примере 1, и вычисляем рекомендуемую конфигурацию для примера 2результат будет совсем другим.Фактически, если мы --executor-cores = 4, а затем вычтем 1 ядро ​​из каждого узла 6 * 24 = 144, то получим 144/4 = 26 исполнителей.оставив 1 ядро ​​для AM ==> --num-executors = 25.Теперь, если мы хотим вычислить количество исполнителей на узел = 25/6 = WHATTTT?Где моя ошибка?

1 Ответ

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

с 6 узлами, 25 ядрами и 125 ГБ, если разбивка составляет «4» ядра на исполнителя, оставляя «1» ядра на узел.тогда 6 * 24 = 144 (всего рассмотренных ядер).144/4 = "36" исполнитель, а не "26".если вы пропустите "1" исполнителя, то это будет "35".таким образом, для каждого узла (от Node1 до Node5 = "6" исполнитель + Node6 = "5" исполнитель + 1 (мы его исключили) или любой другой узел переносит 5 исполнителей, оставшихся с 6), как этот ..

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