Udostępnij za pośrednictwem


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

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

Interakcyjna sesja usługi Apache Livy wycieka

Po ponownym uruchomieniu Apache Livy (z Apache Ambari lub z powodu restartu maszyny wirtualnej z węzłem głównym 0), kiedy sesja interaktywna nadal działa, dochodzi do wycieku sesji zadań. W związku z tym nowe zadania mogą utknąć w stanie Zaakceptowane.

Łagodzenie:

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ń będą ustawione na Livy, jeśli zadania zostały uruchomione w interaktywnej sesji Livy bez jawnie określonych nazw. W przypadku sesji Livy rozpoczętej przez Jupyter Notebook, nazwa zadania zaczyna się od remotesparkmagics_*.

  3. Uruchom następujące polecenie, aby zakończyć te zadania.

    yarn application –kill <Application ID>
    

Nowe zadania startują.

Serwer historii platformy Spark nie został uruchomiony

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

Łagodzenie:

Ręcznie uruchom serwer historii z systemu Ambari.

Problem z uprawnieniami w katalogu dziennika platformy Spark

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

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

Żaden dziennik sterownika nie jest zapisywany.

Łagodzenie:

  1. Dodaj użytkownika hdiuser do grupy hadoop.
  2. Po utworzeniu klastra podaj 777 uprawnień do /var/log/spark.
  3. Zaktualizuj lokalizację dziennika Spark za pomocą narzędzia Ambari do katalogu z uprawnieniami 777.
  4. Uruchom polecenie spark-submit z uprawnieniami sudo.

łącznik Spark-Phoenix nie jest obsługiwany

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

Łagodzenie:

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.

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

Nie używaj znaków innych niż ASCII w nazwach plików notesu 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 przekazania 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 .

Łagodzenie:

Jeśli wystąpi ten błąd, nie oznacza to, że dane są uszkodzone lub utracone. Notatniki nadal znajdują się na dysku w /var/lib/jupyter, i możesz połączyć się z klastrem przez 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 utworzyć tunel SSH do węzła głównego na porcie 8001, aby uzyskać dostęp do Jupyter Notebook bez przechodzenia przez bramę. Tutaj możesz wyczyścić dane wyjściowe notatnika i zapisać je ponownie, aby zmniejszyć jego rozmiar.

Aby zapobiec wystąpieniu 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 przypadku programu Jupyter jest unikanie uruchamiania na dużej ramce danych lub dużym RDD. Zamiast tego, jeśli chcesz zajrzeć do zawartości RDD, rozważ uruchomienie .collect().take() lub .sample(), tak aby dane wyjściowe nie były zbyt duże.
  • Ponadto podczas zapisywania notatnika wyczyść wszystkie komórki wyjściowe, aby zmniejszyć rozmiar.

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

Pierwsze polecenie kodu w Jupyter Notebook używające Spark magic może potrwać więcej niż minutę.

Wyjaśnienie:

Dzieje się tak przy uruchamianiu pierwszej komórki kodu. W tle to inicjuje konfigurację 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.

Przekroczenie czasu Jupyter Notebook przy tworzeniu sesji

Gdy klaster Spark wyczerpie zasoby, jądra programu Spark i PySpark w Jupyter Notebook wystąpi czas oczekiwania próbując utworzyć sesję.

Środki zaradcze:

  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 Zatrzymaj lub kliknięcie pozycji Zamknij w eksploratorze notesów.
    • Zatrzymywanie innych aplikacji Platformy Spark z usługi YARN.
  2. Uruchom ponownie notebook, który próbujesz uruchomić. Wystarczająca ilość zasobów powinna być dostępna do utworzenia sesji.

Zobacz też

Scenariusze

Tworzenie i uruchamianie aplikacji

Narzędzia i rozszerzenia

Zarządzanie zasobami