Cenário: RpcTimeoutException para servidor thrift Apache Spark no Azure HDInsight
Este artigo descreve as etapas de solução de problemas e possíveis resoluções de problemas ao usar componentes do Apache Spark em clusters do Azure HDInsight.
Problema
O aplicativo Spark falha com uma org.apache.spark.rpc.RpcTimeoutException
exceção e uma mensagem: Futures timed out
, como no exemplo a seguir:
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
e overhead limit exceeded
erros também podem aparecer no sparkthriftdriver.log
exemplo a seguir:
WARN [rpc-server-3-4] server.TransportChannelHandler: Exception in connection from /10.0.0.17:53218
java.lang.OutOfMemoryError: GC overhead limit exceeded
Motivo
Esses erros são causados pela falta de recursos de memória durante o processamento de dados. Se o processo de coleta de lixo Java for iniciado, isso pode levar o aplicativo Spark a parar de responder. As consultas começarão a atingir o tempo limite e a parar o processamento. O Futures timed out
erro indica um cluster sob forte estresse.
Resolução
Aumente o tamanho do cluster adicionando mais nós de trabalho ou aumentando a capacidade de memória dos nós de cluster existentes. Você também pode ajustar o pipeline de dados para reduzir a quantidade de dados que estão sendo processados de uma só vez.
O spark.network.timeout
controla o tempo limite para todas as conexões de rede. Aumentar o tempo limite da rede pode permitir mais tempo para algumas operações críticas serem concluídas, mas isso não resolverá o problema completamente.
Próximos passos
Se não viu o problema ou não conseguiu resolvê-lo, visite um dos seguintes canais para obter mais suporte:
Obtenha respostas de especialistas do Azure através do Suporte da Comunidade do Azure.
Conecte-se com o @AzureSupport - a conta oficial do Microsoft Azure para melhorar a experiência do cliente. Ligar a comunidade do Azure aos recursos certos: respostas, suporte e especialistas.
Se precisar de mais ajuda, você pode enviar uma solicitação de suporte do portal do Azure. Selecione Suporte na barra de menus ou abra o hub Ajuda + suporte . Para obter informações mais detalhadas, consulte Como criar uma solicitação de suporte do Azure. O acesso ao suporte para Gestão de Subscrições e faturação está incluído na sua subscrição do Microsoft Azure e o Suporte Técnico é disponibilizado através de um dos Planos de Suporte do Azure.