Как избежать проблемы смещения рабочей нагрузки искры - PullRequest
0 голосов
/ 07 декабря 2018

У меня проблема с точки зрения смещения рабочей нагрузки искры.

Настройка Env

Кластер имеет 5 узлов, одного мастера и 5 рабочих (ниже 10.200.0.94 ~ 10.200.0.98).

Каждый узел имеет 40 ядер (сHyperthreading) и 256g памяти.

Настройка задания Spark

  • num-executors 5
  • executor-core 5
  • Память драйвера 16g
  • Память исполнителя 20g

Задача состоит в том, чтобы вычислить записи аномалий среди миллионов записей.

Вот история задания после запуска заданияпочти 2 ~ 3 часа.

overview-spark-job-setting

Как мы видим, в основном это 6 стадий, большую часть времени приходится на стадии 3, 4 и 5.

Давайте углубимся в этап 3 (этапы 4 и 5 имеют схожие результаты):

dive_into_stage_3

Очевидно, что некоторые задачи занимают гораздо больше времени, чем другие узлы, например, задачи, связанные с узлом, имеющим частный ip 10.200.0.96.

Время GC кажется разумным.

Давайте теперь погрузимся в представление исполнителя:

executor_view

Узел 96 и98 занимает гораздо больше времени на выполнение задачи, чем другие узлы.

Следует отметить, что я не использовал никаких действий repartition.

Может кто-нибудь дать некоторые подсказки по этому поводу?Как я могу избежать такого смещения вычислений в работе Spark?Есть ли общие правила, которым нужно следовать?

1 Ответ

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

вы создали конвейер, от которого зависит один из них, также вы используете контрольную точку?

...