Udostępnij za pośrednictwem


Przesyłanie i zarządzanie zadaniami w klastrze Apache Spark™ w HDInsight na AKS

Ważny

Usługa Azure HDInsight w usłudze AKS została wycofana 31 stycznia 2025 r. Dowiedz się więcej dzięki temu ogłoszeniu.

Aby uniknąć nagłego kończenia obciążeń, należy przeprowadzić migrację obciążeń do usługi Microsoft Fabric lub równoważnego produktu platformy Azure.

Ważny

Ta funkcja jest obecnie dostępna w wersji zapoznawczej. Dodatkowe warunki użytkowania platformy Microsoft Azure zawierają więcej warunków prawnych, które dotyczą funkcji platformy Azure będących w wersji beta, w wersji zapoznawczej lub w inny sposób jeszcze nieudostępnione ogólnie. Aby uzyskać informacje na temat tej konkretnej wersji zapoznawczej, zobacz informacje o wersji zapoznawczej Azure HDInsight na AKS. W przypadku pytań lub sugestii dotyczących funkcji prosimy o przesłanie zapytania na AskHDInsight ze szczegółami oraz obserwowanie nas dla uzyskania więcej informacji na temat społeczności Azure HDInsight.

Po utworzeniu klastra użytkownik może przesyłać zadania i zarządzać nimi za pomocą różnych interfejsów

  • korzystanie z programu Jupyter
  • korzystanie z Zeppelina
  • korzystanie z protokołu ssh (spark-submit)

Korzystanie z programu Jupyter

Warunki wstępne

Klaster Apache Spark™ w usłudze HDInsight na AKS. Aby uzyskać więcej informacji, zobacz Tworzenie klastra Apache Spark.

Jupyter Notebook to interaktywne środowisko notesu, które obsługuje różne języki programowania.

Tworzenie notesu Jupyter

  1. Przejdź do strony klastra Apache Spark™ i otwórz kartę Przegląd. Kliknij aplikację Jupyter. Zostanie wyświetlona prośba o uwierzytelnienie i otwarcie strony internetowej Jupyter.

    Zrzut ekranu przedstawiający sposób wybierania notesu Jupyter.

  2. Na stronie Jupyter wybierz Nowy > PySpark, aby utworzyć notatnik.

    zrzut ekranu przedstawiający nową stronę PySpark.

    Utworzono i otwarto nowy notes z nazwą Untitled(Untitled.ipynb).

    Notatka

    Korzystając z jądra PySpark lub Python 3 do utworzenia notesu, sesja Spark jest tworzona automatycznie podczas uruchamiania pierwszej komórki kodu. Nie trzeba jawnie tworzyć sesji.

  3. Wklej następujący kod w pustej komórce notesu Jupyter Notebook, a następnie naciśnij SHIFT + ENTER, aby uruchomić kod. Aby uzyskać więcej kontrolek w programie Jupyter, zobacz tutaj.

    zrzut ekranu przedstawiający stronę PySpark z zawartością.

    %matplotlib inline
    import pandas as pd
    import matplotlib.pyplot as plt
    data1 = [22,40,10,50,70]
    s1 = pd.Series(data1)   #One-dimensional ndarray with axis labels (including time series).
    
    data2 = data1
    index = ['John','sam','anna','smith','ben']
    s2 = pd.Series(data2,index=index)
    
    data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70}
    s3 = pd.Series(data3)
    
    s3['jp'] = 32     #insert a new row
    s3['John'] = 88
    
    names = ['John','sam','anna','smith','ben']
    ages = [10,40,50,48,70]
    name_series = pd.Series(names)
    age_series = pd.Series(ages)
    
    data_dict = {'name':name_series, 'age':age_series}
    dframe = pd.DataFrame(data_dict)   
    #create a pandas DataFrame from dictionary
    
    dframe['age_plus_five'] = dframe['age'] + 5   
    #create a new column
    dframe.pop('age_plus_five')
    #dframe.pop('age')
    
    salary = [1000,6000,4000,8000,10000]
    salary_series = pd.Series(salary)
    new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series}
    new_dframe = pd.DataFrame(new_data_dict)
    new_dframe['average_salary'] = new_dframe['age']*90
    
    new_dframe.index = new_dframe['name']
    print(new_dframe.loc['sam'])
    
  4. Wykreśl wykres z wynagrodzeniem na osi X i wiekiem na osi Y.

  5. W tym samym notesie wklej następujący kod w pustej komórce notesu Jupyter Notebook, a następnie naciśnij shift + ENTER, aby uruchomić kod.

    %matplotlib inline
    import pandas as pd
    import matplotlib.pyplot as plt
    
    plt.plot(age_series,salary_series)
    plt.show()
    

    Zrzut ekranu przedstawiający dane wyjściowe grafu.

Zapisywanie notesu

  1. Na pasku menu notesu przejdź do pozycji Plik > Zapisz i Punkt kontrolny.

  2. Zamknij notes, aby zwolnić zasoby klastra: na pasku menu notesu przejdź do pozycji Plik > Zamknij i zatrzymaj. Możesz również uruchomić dowolny notebook w folderze przykłady.

    Zrzut ekranu przedstawiający sposób zapisywania książek notatek.

Korzystanie z notesów Apache Zeppelin

Klastry Apache Spark w HDInsight na AKS obejmują notatniki Apache Zeppelin. Użyj notesów do uruchamiania zadań platformy Apache Spark. W tym artykule dowiesz się, jak używać notesu Zeppelin na klastrze HDInsight na AKS.

Warunki wstępne

Klaster Apache Spark na HDInsight w AKS. Aby uzyskać instrukcje, zobacz Tworzenie klastra Apache Spark.

Uruchamianie notesu Apache Zeppelin

  1. Przejdź do strony przeglądu klastra Apache Spark i wybierz notebook Zeppelin z pulpitów klastra. Wymaga uwierzytelnienia i otwarcia strony Zeppelin.

    Zrzut ekranu przedstawiający jak wybrać Zeppelin.

  2. Utwórz nowy notatnik. W okienku nagłówka przejdź do Notes >, aby utworzyć nową notatkę. Upewnij się, że nagłówek notesu pokazuje status połączenia. Oznacza zieloną kropkę w prawym górnym rogu.

    zrzut ekranu przedstawiający sposób tworzenia notesu Zeppelin.

  3. Uruchom następujący kod w notesie Zeppelin:

    %livy.pyspark
    import pandas as pd
    import matplotlib.pyplot as plt
    data1 = [22,40,10,50,70]
    s1 = pd.Series(data1)   #One-dimensional ndarray with axis labels (including time series).
    
    data2 = data1
    index = ['John','sam','anna','smith','ben']
    s2 = pd.Series(data2,index=index)
    
    data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70}
    s3 = pd.Series(data3)
    
    s3['jp'] = 32     #insert a new row
    
    s3['John'] = 88
    
    names = ['John','sam','anna','smith','ben']
    ages = [10,40,50,48,70]
    name_series = pd.Series(names)
    age_series = pd.Series(ages)
    
    data_dict = {'name':name_series, 'age':age_series}
    dframe = pd.DataFrame(data_dict)   #create a pandas DataFrame from dictionary
    
    dframe['age_plus_five'] = dframe['age'] + 5   #create a new column
    dframe.pop('age_plus_five')
    #dframe.pop('age')
    
    salary = [1000,6000,4000,8000,10000]
    salary_series = pd.Series(salary)
    new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series}
    new_dframe = pd.DataFrame(new_data_dict)
    new_dframe['average_salary'] = new_dframe['age']*90
    
    new_dframe.index = new_dframe['name']
    print(new_dframe.loc['sam'])
    
  4. Aby uruchomić fragment kodu, wybierz przycisk Odtwórz dla akapitu. Stan w prawym rogu akapitu powinien przechodzić od POZYCJI GOTOWE, OCZEKUJĄCE, URUCHOMIONE na ZAKOŃCZONO. Dane wyjściowe są wyświetlane w dolnej części tego samego akapitu. Zrzut ekranu wygląda jak na poniższej ilustracji:

    zrzut ekranu przedstawiający, jak uruchomić notatnik Zeppelin.

    Wyjście:

    zrzut ekranu przedstawiający dane wyjściowe notesu Zeppelin.

Korzystanie z uruchamiania zadań w Spark

  1. Utwórz plik przy użyciu następującego polecenia "#vim samplefile.py"

  2. To polecenie otwiera plik vim

  3. Wklej następujący kod do pliku vim

    import pandas as pd
    import matplotlib.pyplot as plt
    
    From pyspark.sql import SparkSession
    Spark = SparkSession.builder.master('yarn').appName('SparkSampleCode').getOrCreate()
    # Initialize spark context
    data1 = [22,40,10,50,70]
    s1 = pd.Series(data1)   #One-dimensional ndarray with axis labels (including time series).
    
    data2 = data1
    index = ['John','sam','anna','smith','ben']
    s2 = pd.Series(data2,index=index)
    
    data3 = {'John':22, 'sam':40, 'anna':10,'smith':50,'ben':70}
     s3 = pd.Series(data3)
    
    s3['jp'] = 32     #insert a new row
    
    s3['John'] = 88
    
    names = ['John','sam','anna','smith','ben']
    ages = [10,40,50,48,70]
    name_series = pd.Series(names)
    age_series = pd.Series(ages)
    
    data_dict = {'name':name_series, 'age':age_series}
    dframe = pd.DataFrame(data_dict)   #create a pandas DataFrame from dictionary
    
    dframe['age_plus_five'] = dframe['age'] + 5   #create a new column
    dframe.pop('age_plus_five')
    #dframe.pop('age')
    
    salary = [1000,6000,4000,8000,10000]
    salary_series = pd.Series(salary)
    new_data_dict = {'name':name_series, 'age':age_series,'salary':salary_series}
    new_dframe = pd.DataFrame(new_data_dict)
    new_dframe['average_salary'] = new_dframe['age']*90
    
    new_dframe.index = new_dframe['name']
    print(new_dframe.loc['sam'])
    
  4. Zapisz plik przy użyciu następującej metody.

    1. Naciśnij przycisk Ucieczka
    2. Wprowadź polecenie :wq
  5. Uruchom następujące polecenie, aby uruchomić zadanie.

    /spark-submit --master yarn --deploy-mode cluster <filepath>/samplefile.py

    Zrzut ekranu przedstawiający sposób uruchamiania zadania przesyłania Spark.

Monitorowanie zapytań w klastrze Apache Spark w HDInsight na AKS

Interfejs historii Spark

  1. Kliknij zakładkę Przeglądowy i wybierz Spark History Server UI.

    zrzut ekranu przedstawiający interfejs użytkownika platformy Spark.

  2. Wybierz ostatnie uruchomienie z interfejsu użytkownika przy użyciu tego samego identyfikatora aplikacji.

    zrzut ekranu przedstawiający sposób uruchamiania interfejsu użytkownika platformy Spark.

  3. Wyświetl cykle skierowanego grafu Acyklicznego i etapy zadania w interfejsie użytkownika serwera historii platformy Spark.

    zrzut ekranu przedstawiający cykl DAG.

interfejsu użytkownika sesji usługi Livy

  1. Aby otworzyć interfejs użytkownika sesji usługi Livy, wpisz następujące polecenie w przeglądarce https://<CLUSTERNAME>.<CLUSTERPOOLNAME>.<REGION>.projecthilo.net/p/livy/ui

    Zrzut ekranu przedstawiający sposób otwierania interfejsu użytkownika sesji usługi Livy.

  2. Wyświetl dzienniki sterowników, klikając opcję sterownika w obszarze dzienników.

interfejsu użytkownika usługi Yarn

  1. Na karcie Przegląd kliknij pozycję Yarn i otwórz interfejs użytkownika usługi Yarn.

    Zrzut ekranu przedstawiający sposób wybierania interfejsu użytkownika Yarn.

  2. Zadanie, które zostało ostatnio uruchomione, można śledzić według tego samego identyfikatora aplikacji.

  3. Kliknij identyfikator aplikacji w usłudze Yarn, aby wyświetlić szczegółowe dzienniki zadania.

    wyświetl dzienniki.

Odniesienie