Поделиться через


Отправка заданий и управление ими в кластере Apache Spark™ в HDInsight в AKS

Важный

Azure HDInsight на AKS было прекращено 31 января 2025 г. Узнайте больше о из этого объявления.

Необходимо перенести рабочие нагрузки в Microsoft Fabric или эквивалентный продукт Azure, чтобы избежать резкого завершения рабочих нагрузок.

Важный

Эта функция сейчас доступна в предварительной версии. Дополнительные условия использования для предварительных версий Microsoft Azure включают дополнительные юридические термины, применимые к функциям Azure, которые находятся в бета-версии, в предварительной версии или в противном случае еще не выпущены в общую доступность. Сведения об этой конкретной предварительной версии см. в Azure HDInsight в предварительной версии AKS. Для вопросов или предложений по улучшениям функций отправьте запрос на AskHDInsight с указанием подробностей и следите за обновлениями в Azure HDInsight Community.

После создания кластера пользователь может использовать различные интерфейсы для отправки заданий и управления ими.

  • использование Jupyter
  • использование Zeppelin
  • с использованием ssh (spark-submit)

Использование Jupyter

Необходимые условия

Кластер Apache Spark™ в HDInsight в AKS. Дополнительные сведения см. в статье Создание кластера Apache Spark.

Jupyter Notebook — это интерактивная среда записной книжки, поддерживающая различные языки программирования.

Создание записной книжки Jupyter

  1. Перейдите на страницу кластера Apache Spark™ и откройте вкладку Обзор. Щелкните Jupyter, чтобы пройти проверку подлинности и открыть веб-страницу Jupyter в браузере.

    Скриншот выбора записной книжки Jupyter.

  2. На веб-странице Jupyter выберите Новый > PySpark, чтобы создать тетрадь.

    снимок экрана новой страницы PySpark.

    Новая записная книжка создана и открыта с именем Untitled(Untitled.ipynb).

    Заметка

    При использовании ядра PySpark или Python 3 для создания записной книжки, сеанс Spark автоматически создается при запуске первой ячейки кода. Не нужно явно создавать сеанс.

  3. Вставьте следующий код в пустую ячейку Jupyter Notebook, а затем нажмите клавиши SHIFT+ ВВОД, чтобы запустить код. См. для получения более подробных элементов управления в Jupyter.

    снимок экрана страницы PySpark с содержимым.

    %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. Постройте график, указав зарплату по оси X и возраст по оси Y.

  5. В том же ноутбуке вставьте следующий код в пустую ячейку Jupyter Notebook, а затем нажмите клавиши SHIFT + ENTER, чтобы запустить код.

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

    снимок экрана вывода графика.

Сохранение записной книжки

  1. В строке меню записной книжки перейдите к Файлу > Сохранить и Контрольная точка.

  2. Закройте записную книжку, чтобы освободить ресурсы кластера: в строке меню записной книжки перейдите к разделу "Файл > закрыть и остановить". Вы также можете запустить любую из записных книжек в папке examples.

    снимок экрана как сохранить блокноты.

Использование записных книжек Apache Zeppelin

Кластеры Apache Spark в HDInsight на AKS включают записные книжки Apache Zeppelin. Используйте записные книжки для запуска заданий Apache Spark. В этой статье вы узнаете, как использовать записную книжку Zeppelin в HDInsight на кластере AKS.

Необходимые условия

Кластер Apache Spark на базе HDInsight в среде AKS. Инструкции см. в статье Создание кластера Apache Spark.

Запуск блокнота Apache Zeppelin

  1. Перейдите на страницу обзора кластера Apache Spark и выберите записную книжку Zeppelin на панели мониторинга кластера. Система запрашивает аутентификацию и открытие страницы Zeppelin.

    скриншот, показывающий, как выбрать Zeppelin.

  2. Создайте записную книжку. На панели заголовка выберите записную книжку > и нажмите "Создать новую заметку". Убедитесь, что заголовок записной книжки отображает состояние подключения. Он обозначает зеленую точку в правом верхнем углу.

    Скриншот процесса создания записной книжки Zeppelin.

  3. Выполните следующий код в Записной книжке 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. Нажмите кнопку «Воспроизвести», чтобы запустить фрагмент кода для абзаца. Состояние в правом углу строки абзаца должно изменяться с READY, PENDING, RUNNING до FINISHED. Выходные данные отображаются в нижней части того же абзаца. Снимок экрана выглядит следующим образом:

    снимок экрана: запуск записной книжки Zeppelin.

    Выпуск:

    снимок экрана выходных данных записной книжки Zeppelin.

Использование заданий с использованием Spark

  1. Создайте файл с помощью следующей команды "#vim samplefile.py"

  2. Эта команда открывает файл vim

  3. Вставьте следующий код в файл 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. Сохраните файл с помощью следующего метода.

    1. Нажмите кнопку Escape
    2. Введите команду :wq
  5. Выполните следующую команду, чтобы запустить задание.

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

    Снимок экрана, показывающий, как запустить задание через Spark submit.

Мониторинг запросов к кластеру Apache Spark в HDInsight в AKS

Интерфейс истории Spark

  1. Щелкните по интерфейсу сервера истории Spark на вкладке обзора.

    снимок экрана с пользовательским интерфейсом Spark.

  2. Выберите последний запуск из пользовательского интерфейса с помощью того же идентификатора приложения.

    снимок экрана: запуск пользовательского интерфейса Spark.

  3. Посмотрите направленный ациклический граф и этапы задания в интерфейсе сервера истории Spark.

    снимок экрана цикла DAG.

Пользовательский интерфейс сеанса Livy

  1. Чтобы открыть пользовательский интерфейс сеанса Livy, введите следующую команду в браузере https://<CLUSTERNAME>.<CLUSTERPOOLNAME>.<REGION>.projecthilo.net/p/livy/ui

    снимок экрана: открытие пользовательского интерфейса сеанса Livy.

  2. Просмотрите журналы драйверов, выбрав опцию драйвера, доступную в разделе журналов.

пользовательского интерфейса Yarn

  1. На вкладке "Обзор" щелкните Yarn и откройте пользовательский интерфейс Yarn.

    Снимок экрана, показывающий, как выбрать интерфейс Yarn UI.

  2. Вы можете отслеживать задание, которое вы недавно выполнили с помощью того же идентификатора приложения.

  3. Щелкните идентификатор приложения в Yarn, чтобы просмотреть подробные журналы задания.

    просмотр журналов.

Ссылка