Сценарий: исключение RpcTimeoutException для сервера Thrift в Apache Spark в Azure HDInsight
В этой статье описываются действия по устранению неполадок и возможные способы исправления проблем, возникающих при использовании компонентов Apache Spark в кластерах Azure HDInsight.
Проблема
Работа приложения Spark завершается сбоем с исключением org.apache.spark.rpc.RpcTimeoutException
и сообщением Futures timed out
, как показано в следующем примере:
org.apache.spark.rpc.RpcTimeoutException: Futures timed out after [120 seconds]. This timeout is controlled by spark.rpc.askTimeout
at org.apache.spark.rpc.RpcTimeout.org$apache$spark$rpc$RpcTimeout$$createRpcTimeoutException(RpcTimeout.scala:48)
Также могут появляться ошибки OutOfMemoryError
или overhead limit exceeded
в sparkthriftdriver.log
, как показано в следующем примере:
WARN [rpc-server-3-4] server.TransportChannelHandler: Exception in connection from /10.0.0.17:53218
java.lang.OutOfMemoryError: GC overhead limit exceeded
Причина
Эти ошибки вызваны недостатком ресурсов памяти при обработке данных. Если запускается процесс сборки мусора Java, приложение Spark может перестать отвечать на запросы. В этом случае обработка запросов прервется из-за истечения время ожидания. Ошибка Futures timed out
означает, что кластер работает в условиях сильной перегрузки.
Разрешение
Увеличьте размер кластера, добавив дополнительные рабочие узлы или увеличив объем памяти для существующих узлов кластера. Можно также настроить конвейер данных, чтобы уменьшить объем одновременно обрабатываемых данных.
Значение spark.network.timeout
определяет время ожидания для всех сетевых подключений. Увеличение времени ожидания может дать некоторый запас для завершения критически важных операций, но не позволит полностью устранить проблему.
Следующие шаги
Если вы не видите своего варианта проблемы или вам не удается ее устранить, дополнительные сведения можно получить, посетив один из следующих каналов.
Получите ответы специалистов Azure на сайте поддержки сообщества пользователей Azure.
Подпишитесь на @AzureSupport — официальный канал Microsoft Azure для улучшения качества взаимодействия с клиентами. Вступайте в сообщество Azure для получения нужных ресурсов: ответов, поддержки и советов экспертов.
Если вам нужна дополнительная помощь, отправьте запрос в службу поддержки на портале Azure. Выберите Поддержка в строке меню или откройте центр Справка и поддержка. Дополнительные сведения см. в статье Создание запроса на поддержку Azure. Доступ к управлению подписками и поддержкой выставления счетов уже включен в вашу подписку Microsoft Azure, а техническая поддержка предоставляется в рамках одного из планов Службы поддержки Azure.