Я выполняю запрос с использованием Hive on Spark, который демонстрирует странное поведение. Я запускал его несколько раз и наблюдал такое же поведение. Запрос:
Все хорошо в начале работы. После примерно 1,5 часов запуска 2800 процессоров задание завершено примерно на 80% (задачи 800 000/990 000). С этого момента все начинает падать: Spark перестает использовать все доступные ему процессоры для работы над задачами. При выполнении ~190 тыс. задач Spark постепенно уменьшится с использования 2800 ЦП до двузначного числа (обычно общее количество ЦП составляет около 20). Из-за этого последние 190 000 задач выполняются значительно дольше, чем предыдущие 800 000.
По мере того, как работа была очень близка к завершению, я мог видеть, что Spark не сможет распараллелить небольшое количество оставшихся задач на большом количестве процессоров. Но с учетом того, что осталось запустить 190 000 задач, для этого слишком рано.
Что я проверил:
Есть ли у кого-нибудь совет?





Для потомков этот ответ от Трэвиса Хегнера содержал ответ.
Настройка spark.locality.wait=0s устраняет эту проблему. Я также не уверен, почему 3-секундное ожидание вызывает такое нагромождение способности Spark планировать задачи, но установка на 0 делает работу очень хорошей.