Scenariusz: RpcTimeoutException dla serwera thrift platformy Apache Spark w usłudze 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.
Problem
Aplikacja spark kończy się niepowodzeniem org.apache.spark.rpc.RpcTimeoutException
z wyjątkiem 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
błędy i overhead limit exceeded
mogą również występować w pliku w sparkthriftdriver.log
następujący przykład:
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 odzyskiwania pamięci w języku Java zostanie uruchomiony, może to prowadzić do zatrzymania reagowania przez aplikację Platformy 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 sieci może pozwolić na zakończenie niektórych krytycznych operacji, ale nie rozwiąże to problemu całkowicie.
Następne kroki
Jeśli problem nie został wyświetlony lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać więcej pomocy technicznej:
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 How to create an pomoc techniczna platformy Azure request (Jak utworzyć żądanie pomoc techniczna 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.