почему одно ядро ​​работника Spark выполняет каждую задачу быстрее, чем остальные ядра других работников? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть три узла в кластере, каждый с одним активным ядром. Я имею в виду, у меня есть 3 ядра в кластере.

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

enter image description here

Пожалуйста, соблюдайте этот скриншот. Временная шкала показывает, что задержка рабочего ядра (x.x.x.230) заметно короче, чем задержки двух других рабочих ядер (x.x.x.210 и x.x.x.220).

Это означает, что работники x.x.x.210 и x.x.x.220 выполняют одну и ту же работу в течение более длительного времени по сравнению с работником x.x.x.230. Это также происходит, когда используются все доступные ядра в кластере, но его задержка не столь критична.

enter image description here

Я снова подал заявку. Посмотрите на этот новый скриншот. Теперь самый быстрый работник - это x.x.x.210. Обратите внимание, что задачи 0, 1 и 2 обрабатывают разделы с почти одинаковым количеством записей. Это несоответствие времени выполнения не хорошо, не так ли?

Я не понимаю !!!

На самом деле я создаю DataFrame и выполняю операцию отображения для получения нового DataFrame, сохраняя результат в файле Parquet.

val input: DataFrame = spark.read.parquet(...)
val result: DataFrame = input.map(row => /* ...operations... */)
result.write.parquet(...)

Есть идеи, почему это происходит? Так Spark работает нормально?

Заранее спасибо.

...