다음을 통해 공유


시나리오: Azure HDInsight에서 Apache Spark Thrift 서버에 대한 RpcTimeoutException

이 문서에서는 Azure HDInsight 클러스터에서 Apache Spark 구성 요소를 사용할 때 발생하는 문제 해결 단계와 가능한 문제 해결 방법을 설명합니다.

문제

다음 예제와 같이 org.apache.spark.rpc.RpcTimeoutException 예외와 Futures timed out 메시지로 인해 Spark 애플리케이션이 실패합니다.

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)

다음 예제와 같이 sparkthriftdriver.logOutOfMemoryErroroverhead limit exceeded 오류도 표시될 수 있습니다.

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 전문가로부터 답변을 얻습니다.

  • 사용자 환경을 개선하기 위한 공식 Microsoft Azure 계정인 @AzureSupport와 연결합니다. Azure 커뮤니티를 적절한 리소스(답변, 지원 및 전문가)에 연결합니다.

  • 도움이 더 필요한 경우 Azure Portal에서 지원 요청을 제출할 수 있습니다. 메뉴 모음에서 지원을 선택하거나 도움말 + 지원 허브를 엽니다. 자세한 내용은 Azure 지원 요청을 만드는 방법을 참조하세요. 구독 관리 및 청구 지원에 대한 액세스 권한은 Microsoft Azure 구독에 포함되어 있으며, Azure 지원 플랜 중 하나를 통해 기술 지원이 제공됩니다.