Używanie rozszerzonych funkcji serwera historii platformy Apache Spark do debugowania i diagnozowania aplikacji platformy Spark

W tym artykule pokazano, jak używać rozszerzonych funkcji serwera historii platformy Apache Spark do debugowania i diagnozowania ukończonych lub uruchomionych aplikacji platformy Spark. Rozszerzenie zawiera kartę Dane , kartę Grafu i kartę Diagnostyka . Na karcie Dane możesz sprawdzić dane wejściowe i wyjściowe zadania platformy Spark. Na karcie Graf możesz sprawdzić przepływ danych i odtworzyć wykres zadania. Na karcie Diagnostyka można odwoływać się do funkcji Niesymetryczność danych, Niesymetryczność czasu i Analiza użycia funkcji wykonawczej.

Uzyskiwanie dostępu do serwera historii platformy Spark

Serwer historii platformy Spark to internetowy interfejs użytkownika dla ukończonych i uruchomionych aplikacji platformy Spark. Możesz otworzyć go w witrynie Azure Portal lub w adresie URL.

Otwórz internetowy interfejs użytkownika serwera historii platformy Spark w witrynie Azure Portal

  1. W witrynie Azure Portal otwórz klaster Spark. Aby uzyskać więcej informacji, zobacz Wyświetlanie i wyświetlanie klastrów.

  2. W obszarze Pulpity nawigacyjne klastra wybierz pozycję Serwer historii platformy Spark. Po wyświetleniu monitu wprowadź poświadczenia administratora dla klastra Spark.

    Launch the Spark History Server from the Azure portal. witryna Azure Portal." border="true":::

Otwórz internetowy interfejs użytkownika serwera historii platformy Spark według adresu URL

Otwórz serwer historii platformy Spark, przechodząc do https://CLUSTERNAME.azurehdinsight.net/sparkhistorylokalizacji , gdzie CLUSTERNAME jest nazwą klastra Spark.

Internetowy interfejs użytkownika serwera historii platformy Spark może wyglądać podobnie do poniższego obrazu:

The Spark History Server page.

Korzystanie z karty Dane na serwerze historii platformy Spark

Wybierz identyfikator zadania, a następnie wybierz pozycję Dane w menu narzędzi, aby wyświetlić widok danych.

  • Przejrzyj dane wejściowe, dane wyjściowe i operacje tabeli, wybierając poszczególne karty.

    Data tabs on the Data for Spark Application page.

  • Skopiuj wszystkie wiersze, wybierając przycisk Kopiuj .

    Copy data on the Spark application page.

  • Zapisz wszystkie dane jako . Plik CSV, wybierając przycisk csv .

    Save data as a .CSV file from the Data for Spark Application page.

  • Przeszukaj dane, wprowadzając słowa kluczowe w polu Wyszukaj . Wyniki wyszukiwania będą wyświetlane natychmiast.

    Search data on the Data for Spark Application page.

  • Wybierz nagłówek kolumny, aby posortować tabelę. Wybierz znak plus, aby rozwinąć wiersz, aby wyświetlić więcej szczegółów. Wybierz znak minus, aby zwinąć wiersz.

    The data table on the Data for Spark Application page.

  • Pobierz pojedynczy plik, wybierając przycisk Pobierz częściowe po prawej stronie. Wybrany plik zostanie pobrany lokalnie. Jeśli plik już nie istnieje, spowoduje to otwarcie nowej karty w celu wyświetlenia komunikatów o błędach.

    The data download row on the Data for Spark Application page.

  • Skopiuj pełną ścieżkę lub ścieżkę względną, wybierając opcję Kopiuj pełną ścieżkę lub Kopiuj ścieżkę względną, która rozwija się z menu pobierania. W przypadku plików usługi Azure Data Lake Storage wybierz pozycję Otwórz w Eksplorator usługi Azure Storage, aby uruchomić Eksplorator usługi Azure Storage i zlokalizować folder po zalogowaniu.

    Copy Full Path and Copy Relative Path options on the Data for Spark Application page.

  • Jeśli na jednej stronie jest wyświetlanych zbyt wiele wierszy, wybierz numery stron w dolnej części tabeli, aby przejść.

    Page numbers on the Data for Spark Application page.

  • Aby uzyskać więcej informacji, umieść kursor na lub wybierz znak zapytania obok pozycji Dane aplikacji spark, aby wyświetlić etykietkę narzędzia.

    Get more information from the Data for Spark Application page.

  • Aby wysłać opinię na temat problemów, wybierz pozycję Przekaż nam opinię.

    Provide feedback from the Data for Spark Application page.

Korzystanie z karty Graph na serwerze historii platformy Spark

  • Wybierz identyfikator zadania, a następnie wybierz pozycję Graph w menu narzędzi, aby wyświetlić wykres zadania. Domyślnie na wykresie będą wyświetlane wszystkie zadania. Filtruj wyniki przy użyciu menu rozwijanego Identyfikator zadania.

    The Job ID drop-down menu on the Spark Application & Job Graph page.

  • Postęp jest domyślnie wybierany. Sprawdź przepływ danych, wybierając pozycję Odczyt lub Zapis w menu rozwijanym Wyświetlanie .

    Check the data flow on the Spark Application & Job Graph page.

  • Kolor tła każdego zadania odpowiada mapie cieplnej.

    The heat map on the Spark Application & Job Graph page.

    Color opis
    Green (Zielony) Zadanie zostało ukończone pomyślnie.
    Orange Zadanie nie powiodło się, ale nie ma to wpływu na ostateczny wynik zadania. Te zadania mają zduplikowane lub ponawiane próby wystąpienia, które mogą zakończyć się powodzeniem później.
    Niebieskie Zadanie jest uruchomione.
    Biała Zadanie czeka na uruchomienie lub etap został pominięty.
    Czerwony Zadanie nie powiodło się.

    Running a task on the Spark Application & Job Graph page.

    Pominięte etapy są wyświetlane w kolorze białym. A skipped task on the Spark Application & Job Graph page.

    A failed task on the Spark Application & Job Graph page.

    Uwaga

    Odtwarzanie jest dostępne dla ukończonych zadań. Wybierz przycisk Odtwarzanie, aby odtworzyć zadanie z powrotem. Zatrzymaj zadanie w dowolnym momencie, wybierając przycisk Zatrzymaj. Gdy zadanie zostanie odtworzona, każde zadanie wyświetli jego stan według koloru. Odtwarzanie nie jest obsługiwane w przypadku zadań niekompletnych.

  • Przewiń w celu powiększenia lub powiększenia wykresu zadania lub wybierz pozycję Powiększ, aby dopasować go do ekranu.

    Select Zoom to fit on the Spark Application & Job Graph page.

  • Gdy zadania kończą się niepowodzeniem, umieść kursor na węźle grafu, aby wyświetlić etykietkę narzędzia, a następnie wybierz etap, aby otworzyć go na nowej stronie.

    View the tooltip on the Spark Application & Job Graph page.

  • Na stronie Wykres aplikacji i zadań platformy Spark etapy będą wyświetlać etykietki narzędzi i małe ikony, jeśli zadania spełniają następujące warunki:

    • Niesymetryczność danych: średni rozmiar odczytu danych rozmiar > wszystkich zadań w tym etapie * 2 i rozmiar > odczytu danych 10 MB.

    • Niesymetryczność czasu>: Średni czas wykonywania wszystkich zadań w tym etapie * 2 i czas > wykonywania 2 minuty.

      The skewed task icon on the Spark Application & Job Graph page.

  • Węzeł grafu zadania wyświetli następujące informacje o każdym etapie:

    • ID

    • Nazwa lub opis

    • Łączna liczba zadań

    • Odczyt danych: suma rozmiaru danych wejściowych i rozmiaru odczytu mieszania

    • Zapis danych: suma rozmiaru danych wyjściowych i rozmiaru zapisu mieszania

    • Czas wykonywania: czas między godziną rozpoczęcia pierwszej próby a czasem zakończenia ostatniej próby

    • Liczba wierszy: suma rekordów wejściowych, rekordów wyjściowych, mieszania rekordów odczytu i mieszania rekordów zapisu

    • Postęp

      Uwaga

      Domyślnie węzeł wykresu zadania wyświetli informacje z ostatniej próby każdego etapu (z wyjątkiem czasu wykonywania etapu). Jednak podczas odtwarzania węzeł grafu zadań wyświetli informacje o każdej próbie.

      Uwaga

      W przypadku rozmiarów odczytu i zapisu danych używamy 1 MB = 1000 KB = 1000 * 1000 bajtów.

  • Prześlij opinię o problemach, wybierając pozycję Przekaż nam opinię.

    The feedback option on the Spark Application & Job Graph page.

Korzystanie z karty Diagnostyka na serwerze historii platformy Spark

Wybierz identyfikator zadania, a następnie wybierz pozycję Diagnoza w menu narzędzi, aby wyświetlić widok diagnostyki zadania. Karta Diagnostyka zawiera niesymetryczność danych, niesymetryczność czasu i analizę użycia funkcji wykonawczej.

  • Przejrzyj opcje Niesymetryczność danych, Niesymetryczność czasu i Analiza użycia funkcji wykonawczej, wybierając odpowiednio karty.

    The Data Skew tab within the Diagnosis tab.

Niesymetryczność danych

Wybierz kartę Niesymetryczność danych. Odpowiednie niesymetryczne zadania są wyświetlane na podstawie określonych parametrów.

Określanie parametrów

W sekcji Określanie parametrów są wyświetlane parametry, które są używane do wykrywania niesymetryczności danych. Reguła domyślna to: Odczyt danych zadania jest większy niż trzy razy w przypadku odczytywania średnich danych zadania, a odczyt danych zadania wynosi ponad 10 MB. Jeśli chcesz zdefiniować własną regułę dla niesymetrycznych zadań, możesz wybrać parametry. Sekcje Niesymetryczne etapy i Wykres niesymetryczny zostaną odpowiednio zaktualizowane.

Etap niesymetryczny

W sekcji Niesymetryczne etapy są wyświetlane etapy, które mają niesymetryczne zadania spełniające określone kryteria. Jeśli na etapie znajduje się więcej niż jedno niesymetryczne zadanie, sekcja Niesymetryczne etapy wyświetla tylko najbardziej niesymetryczne zadanie (czyli największe dane dotyczące niesymetryczności danych).

Larger view of the Data Skew tab within the Diagnosis tab.

Wykres niesymetryczny

Po wybraniu wiersza w tabeli Etap niesymetryczności wykres niesymetryczny wyświetla więcej szczegółów dystrybucji zadań na podstawie czasu odczytu i wykonywania danych. Zadania niesymetryczne są oznaczone kolorem czerwonym, a normalne zadania są oznaczone kolorem niebieskim. W celu rozważenia wydajności wykres wyświetla maksymalnie 100 przykładowych zadań. Szczegóły zadania są wyświetlane w prawym dolnym panelu.

The Skew Chart for Stage 10 in the Spark UI.

Niesymetryczność czasu

Karta Niesymetryczność czasu wyświetla niesymetryczne zadania na podstawie czasu wykonywania zadania.

Określanie parametrów

W sekcji Określanie parametrów są wyświetlane parametry, które są używane do wykrywania niesymetryczności czasu. Reguła domyślna to: Czas wykonywania zadania jest większy niż trzy razy w średnim czasie wykonywania, a czas wykonywania zadania jest dłuższy niż 30 sekund. Parametry można zmienić na podstawie Twoich potrzeb. Wykres niesymetryczny etapu i niesymetryczności wyświetla odpowiednie informacje o etapach i zadaniach, podobnie jak na karcie Niesymetryczność danych.

Po wybraniu pozycji Niesymetryczność czasu filtrowany wynik zostanie wyświetlony w sekcji Etap niesymetryczny zgodnie z parametrami ustawionymi w sekcji Określanie parametrów. Po wybraniu jednego elementu w sekcji Etap niesymetryczny odpowiedni wykres jest opracowywany w trzeciej sekcji, a szczegóły zadania są wyświetlane w prawym dolnym panelu.

The Time skew tab within the Diagnosis tab.

Wykresy analizy użycia funkcji wykonawczej

Wykres użycia funkcji wykonawczej wyświetla rzeczywistą alokację funkcji wykonawczej i stan uruchomienia zadania.

Po wybraniu opcji Analiza użycia funkcji wykonawczej są tworzone cztery różne krzywe dotyczące użycia funkcji wykonawczej: Przydzielone funkcje wykonawcze, Uruchomione funkcje wykonawcze, bezczynne funkcje wykonawcze i Maksymalna liczba wystąpień funkcji wykonawczych. Każde zdarzenie funkcji wykonawczej dodane lub usunięte funkcji wykonawczej spowoduje zwiększenie lub zmniejszenie przydzielonych funkcji wykonawczych. Oś czasu zdarzenia można sprawdzić na karcie Zadania, aby uzyskać więcej porównań.

The Executor Usage Analysis tab within the Diagnosis tab.

Wybierz ikonę koloru, aby wybrać lub usunąć zaznaczenie odpowiedniej zawartości we wszystkich wersjach roboczych.

Select the chart in the Executor Usage Analysis tab.

Często zadawane pytania

Jak mogę przywrócić wersję społeczności?

Aby przywrócić wersję społeczności, wykonaj następujące kroki.

  1. Otwórz klaster w systemie Ambari.

  2. Przejdź do pozycji Spark2 Configs (Konfiguracje platformy Spark2>).

  3. Wybierz pozycję Niestandardowe spark2-defaults.

  4. Wybierz pozycję Dodaj właściwość ....

  5. Dodaj wartość spark.ui.enhancement.enabled=false, a następnie zapisz ją.

  6. Właściwość ustawia wartość false teraz.

  7. Wybierz Zapisz, aby zapisać konfigurację.

    Turn off a feature in Apache Ambari.

  8. Wybierz pozycję Spark2 w panelu po lewej stronie. Następnie na karcie Podsumowanie wybierz pozycję Serwer historii Platformy Spark2.

    The summary view in Apache Ambari.

  9. Aby ponownie uruchomić serwer historii platformy Spark, wybierz przycisk Uruchomiono po prawej stronie serwera historii Spark2, a następnie wybierz pozycję Uruchom ponownie z menu rozwijanego.

    Restart the Spark History Server in Apache Ambari.

  10. Odśwież internetowy interfejs użytkownika serwera historii platformy Spark. Nastąpi przywrócenie wersji community.

Jak mogę przekazać zdarzenie serwera historii platformy Spark, aby zgłosić go jako problem?

Jeśli wystąpi błąd na serwerze historii platformy Spark, wykonaj następujące kroki, aby zgłosić zdarzenie.

  1. Pobierz zdarzenie, wybierając pozycję Pobierz w internetowym interfejsie użytkownika serwera historii platformy Spark.

    Download the event in the Spark History Server UI.

  2. Wybierz pozycję Przekaż nam opinię na stronie Wykres aplikacji i zadań platformy Spark.

    Provide feedback on the Spark Application & Job Graph page.

  3. Podaj tytuł i opis błędu. Następnie przeciągnij plik .zip do pola edycji i wybierz pozycję Prześlij nowy problem.

    Upload and submit a new issue.

Jak mogę uaktualnić plik .jar w scenariuszu poprawki?

Jeśli chcesz uaktualnić poprawkę, użyj następującego skryptu, który uaktualni program spark-enhancement.jar*.

upgrade_spark_enhancement.sh:

 #!/usr/bin/env bash

 # Copyright (C) Microsoft Corporation. All rights reserved.

 # Arguments:
 # $1 Enhancement jar path

 if [ "$#" -ne 1 ]; then
     >&2 echo "Please provide the upgrade jar path."
     exit 1
 fi

 install_jar() {
     tmp_jar_path="/tmp/spark-enhancement-hotfix-$( date +%s )"

     if wget -O "$tmp_jar_path" "$2"; then
         for FILE in "$1"/spark-enhancement*.jar
         do
             back_up_path="$FILE.original.$( date +%s )"
             echo "Back up $FILE to $back_up_path"
             mv "$FILE" "$back_up_path"
             echo "Copy the hotfix jar file from $tmp_jar_path   to $FILE"
             cp "$tmp_jar_path" "$FILE"

             "Hotfix done."
             break
         done
     else    
         >&2 echo "Download jar file failed."
         exit 1
     fi
 }

 jars_folder="/usr/hdp/current/spark2-client/jars"
 jar_path=$1

 if ls ${jars_folder}/spark-enhancement*.jar 1>/dev/null 2>&1;   then
     install_jar "$jars_folder" "$jar_path"
 else
     >&2 echo "There is no target jar on this node. Exit with no action."
     exit 0
 fi

Użycie

upgrade_spark_enhancement.sh https://${jar_path}

Przykład

upgrade_spark_enhancement.sh https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

Używanie pliku powłoki bash z witryny Azure Portal

  1. Uruchom witrynę Azure Portal, a następnie wybierz klaster.

  2. Ukończ akcję skryptu przy użyciu następujących parametrów.

    Właściwości Wartość
    Typ skryptu -Niestandardowe
    Nazwisko UpgradeJar
    Identyfikator URI skryptu powłoki Bash https://hdinsighttoolingstorage.blob.core.windows.net/shsscriptactions/upgrade_spark_enhancement.sh
    Typy węzłów Kierownik, Pracownik
    Parametry https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

    Azure portal submit script action.

Znane problemy

  • Obecnie serwer historii platformy Spark działa tylko dla platformy Spark 2.3 i 2.4.

  • Dane wejściowe i wyjściowe korzystające z rdD nie będą wyświetlane na karcie Dane .

Następne kroki

Sugestie

Jeśli masz jakiekolwiek opinie lub napotkasz jakiekolwiek problemy podczas korzystania z tego narzędzia, wyślij wiadomość e-mail na adres (hdivstool@microsoft.com).