Udostępnij za pośrednictwem


Scenariusz: RpcTimeoutException dla platformy Apache Spark w serwerze thrift w Azure HDInsight

W tym artykule opisano kroki rozwiązywania problemów i możliwe rozwiązania problemów podczas korzystania ze składników platformy Apache Spark w klastrach usługi Azure HDInsight.

Kwestia

Aplikacja Spark kończy się niepowodzeniem z wyjątkiem org.apache.spark.rpc.RpcTimeoutException i komunikatem Futures timed out, jak w poniższym przykładzie:

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 i overhead limit exceeded błędy mogą również pojawiać się w sparkthriftdriver.log, jak w następującym przykładzie:

WARN  [rpc-server-3-4] server.TransportChannelHandler: Exception in connection from /10.0.0.17:53218
java.lang.OutOfMemoryError: GC overhead limit exceeded

Przyczyna

Te błędy są spowodowane brakiem zasobów pamięci podczas przetwarzania danych. Jeśli proces zbierania śmieci w języku Java zostanie uruchomiony, może to prowadzić do zatrzymania reagowania aplikacji Spark. Zapytania zaczną przekraczać limit czasu i zatrzymywać przetwarzanie. Błąd Futures timed out wskazuje klaster pod silnym obciążeniem.

Rozwiązanie

Zwiększ rozmiar klastra, dodając więcej węzłów roboczych lub zwiększając pojemność pamięci istniejących węzłów klastra. Potok danych można również dostosować, aby zmniejszyć ilość przetwarzanych danych jednocześnie.

Kontrolka spark.network.timeout steruje limitem czasu dla wszystkich połączeń sieciowych. Zwiększenie limitu czasu dla sieci może dać więcej czasu na dokończenie niektórych krytycznych operacji, ale nie rozwiąże to problemu całkowicie.

Następne kroki

Jeśli nie widzisz swojego problemu lub nie możesz go rozwiązać, odwiedź jedną z następujących możliwości, aby uzyskać więcej wsparcia:

  • Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem pomocy technicznej społeczności platformy Azure.

  • Nawiąż połączenie z @AzureSupport — oficjalnym kontem platformy Microsoft Azure, aby ulepszyć środowisko klienta. Łączenie społeczności platformy Azure z odpowiednimi zasobami: odpowiedziami, pomocą techniczną i ekspertami.

  • Jeśli potrzebujesz dodatkowej pomocy, możesz przesłać wniosek o pomoc techniczną w witrynie Azure Portal. Wybierz pozycję Pomoc techniczna na pasku menu lub otwórz centrum Pomoc i obsługa techniczna . Aby uzyskać bardziej szczegółowe informacje, zobacz Jak utworzyć zgłoszenie pomocy technicznej platformy Azure. Dostęp do pomocy technicznej dotyczącej zarządzania subskrypcjami i rozliczeniami jest oferowany w ramach subskrypcji platformy Microsoft Azure, a pomoc techniczna jest świadczona w ramach jednego z planów pomocy technicznej platformy Azure.