Znane problemy dotyczące klastra Apache Spark w usłudze HDInsight

Ten dokument śledzi wszystkie znane problemy dotyczące publicznej wersji zapoznawczej usługi HDInsight Spark.

Apache Livy przecieka interaktywną sesję

Po ponownym uruchomieniu usługi Apache Livy (z poziomu systemu Apache Ambari lub z powodu ponownego uruchomienia maszyny wirtualnej z węzłem głównym 0) sesja interaktywna nadal będzie aktywna, wyciek interaktywnej sesji zadania. W związku z tym nowe zadania mogą być zablokowane w stanie Zaakceptowane.

Środki zaradcze:

Aby obejść ten problem, wykonaj następującą procedurę:

  1. Połączenie SSH z węzłem głównym. Aby uzyskać informacje, zobacz Używanie protokołu SSH w usłudze HDInsight.

  2. Uruchom następujące polecenie, aby znaleźć identyfikatory aplikacji zadań interaktywnych uruchomionych za pośrednictwem usługi Livy.

    yarn application –list
    

    Domyślne nazwy zadań to Livy, jeśli zadania zostały uruchomione w interaktywnej sesji usługi Livy bez określonych jawnych nazw. W przypadku sesji usługi Livy rozpoczętej przez Jupyter Notebook nazwa zadania rozpoczyna się od remotesparkmagics_*.

  3. Uruchom następujące polecenie, aby zabić te zadania.

    yarn application –kill <Application ID>
    

Nowe zadania zaczynają działać.

Serwer historii platformy Spark nie został uruchomiony

Serwer historii platformy Spark nie jest uruchamiany automatycznie po utworzeniu klastra.

Środki zaradcze:

Ręcznie uruchom serwer historii z systemu Ambari.

Problem z uprawnieniami w katalogu dziennika platformy Spark

Użytkownik hdiuser otrzymuje następujący błąd podczas przesyłania zadania przy użyciu funkcji spark-submit:

java.io.FileNotFoundException: /var/log/spark/sparkdriver_hdiuser.log (Permission denied)

I żaden dziennik sterowników nie jest zapisywany.

Środki zaradcze:

  1. Dodaj użytkownika hdiuser do grupy hadoop.
  2. Po utworzeniu klastra podaj 777 uprawnień na /var/log/spark.
  3. Zaktualizuj lokalizację dziennika platformy Spark przy użyciu narzędzia Ambari, aby być katalogiem z uprawnieniami 777.
  4. Uruchom polecenie spark-submit jako sudo.

łącznik Spark-Phoenix nie jest obsługiwany

Klastry HDInsight Spark nie obsługują łącznika Spark-Phoenix.

Środki zaradcze:

Należy zamiast tego użyć łącznika Spark-HBase. Aby uzyskać instrukcje, zobacz How to use Spark-HBase connector (Jak używać łącznika Spark-HBase).

Poniżej przedstawiono niektóre znane problemy związane z notesami Jupyter Notebook.

Notesy z znakami innych niż ASCII w nazwach plików

Nie używaj znaków innych niż ASCII w nazwach plików Jupyter Notebook. Jeśli spróbujesz przekazać plik za pośrednictwem interfejsu użytkownika programu Jupyter, który ma nazwę inną niż ASCII, nie powiedzie się bez żadnego komunikatu o błędzie. Program Jupyter nie umożliwia przekazywania pliku, ale nie zgłasza widocznego błędu.

Błąd podczas ładowania notesów o większych rozmiarach

Podczas ładowania notesów o większym rozmiarze może wystąpić błąd Error loading notebook .

Środki zaradcze:

Jeśli wystąpi ten błąd, nie oznacza to, że dane są uszkodzone lub utracone. Notesy są nadal na dysku w /var/lib/jupytersystemie i możesz połączyć się z klastrem za pomocą protokołu SSH, aby uzyskać do nich dostęp. Aby uzyskać informacje, zobacz Używanie protokołu SSH w usłudze HDInsight.

Po nawiązaniu połączenia z klastrem przy użyciu protokołu SSH możesz skopiować notesy z klastra na komputer lokalny (przy użyciu scp lub WinSCP) jako kopię zapasową, aby zapobiec utracie jakichkolwiek ważnych danych w notesie. Następnie możesz tunel SSH do węzła głównego na porcie 8001 uzyskać dostęp do programu Jupyter bez przechodzenia przez bramę. W tym miejscu możesz wyczyścić dane wyjściowe notesu i zapisać go ponownie, aby zminimalizować rozmiar notesu.

Aby zapobiec występowaniu tego błędu w przyszłości, należy postępować zgodnie z najlepszymi rozwiązaniami:

  • Ważne jest, aby rozmiar notesu był niewielki. Wszystkie dane wyjściowe z zadań platformy Spark, które są wysyłane z powrotem do programu Jupyter, są utrwalane w notesie. Najlepszym rozwiązaniem w środowisku Jupyter jest zazwyczaj unikanie uruchamiania .collect() na dużych rddach lub ramkach danych. Zamiast tego, jeśli chcesz zajrzeć do zawartości RDD, rozważ uruchomienie .take() lub .sample() tak, aby dane wyjściowe nie były zbyt duże.
  • Ponadto podczas zapisywania notesu wyczyść wszystkie komórki wyjściowe, aby zmniejszyć rozmiar.

Początkowe uruchamianie notesu trwa dłużej niż oczekiwano

Pierwsza instrukcja kodu w Jupyter Notebook przy użyciu magii platformy Spark może potrwać ponad minutę.

Wyjaśnienie:

Dzieje się tak, ponieważ po uruchomieniu pierwszej komórki kodu. W tle powoduje to zainicjowanie konfiguracji sesji, a konteksty Spark, SQL i Hive są ustawione. Po ustawieniu tych kontekstów pierwsza instrukcja jest uruchamiana i sprawia wrażenie, że ukończenie instrukcji zajęło dużo czasu.

Jupyter Notebook limit czasu podczas tworzenia sesji

Gdy klaster Spark jest poza zasobami, jądra Spark i PySpark w Jupyter Notebook upłynął limit czasu podczas próby utworzenia sesji.

Czynniki:

  1. Zwolnij niektóre zasoby w klastrze Spark, wykonując następujące działania:

    • Zatrzymanie innych notesów platformy Spark przez przejście do menu Zamknij i zatrzymanie lub kliknięcie pozycji Zamknij w Eksploratorze notesów.
    • Zatrzymywanie innych aplikacji Spark z usługi YARN.
  2. Uruchom ponownie notes, który próbujesz uruchomić. Do utworzenia sesji powinna być dostępna wystarczająca ilość zasobów.

Zobacz też

Scenariusze

Tworzenie i uruchamianie aplikacji

Narzędzia i rozszerzenia

Zarządzanie zasobami