Запустить неопределенное ожидание с запросом на отправку выходных местоположений карты для перемешивания

Мои рабочие места часто зависают с таким сообщением:

14/09/01 00:32:18 INFO spark.MapOutputTrackerMasterActor: Asked to send map output locations for shuffle 0 to spark@*:37619

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

Его действительно сложно отлаживать, потому что он не OOM, он не дает ST, он просто сидит, сидит и сидит.

Это было проблемой Spark, по крайней мере, еще в 1.0.0 и все еще продолжается в Spark 1.5.0.


person thegeek    schedule 01.09.2014    source источник
comment
Может тупик? Не могли бы вы вставить трассировку стека потоков с помощью jstack?   -  person zsxwing    schedule 01.09.2014
comment
Можете ли вы воспроизвести это, или это просто иногда случается?   -  person zsxwing    schedule 02.09.2014


Ответы (1)


На основе эта ветка более поздние версии spark лучше перетасовывают (и сообщают об ошибках, если они все равно терпят неудачу). Также были упомянуты следующие советы:

Это очень вероятно, потому что буфер сериализованных выходных расположений карты превышает размер кадра akka. Попробуйте установить для spark.akka.frameSize (по умолчанию 10 МБ) более высокое значение, например 64 или 128.

В новейшей версии Spark это вызовет лучшую ошибку, чего бы это ни стоило.

Возможный обходной путь:

Если распределение ключей в вашем groupByKey искажено (некоторые ключи появляются намного чаще, чем другие), вам следует рассмотреть возможность изменения вашего задания, чтобы использовать вместо него, где это возможно, reduceByKey.

И боковой трек:

Проблема была устранена для меня путем выделения только одного ядра на исполнителя.

возможно, ваша конфигурация памяти исполнителя должна быть разделена по ядрам исполнителя

person Dennis Jaheruddin    schedule 31.07.2020