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


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

Внимание

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

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

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

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

Необходимые компоненты

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

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

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

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

    Снимок экрана: выбор записной книжки Jupyter.

  2. На веб-странице Jupyter выберите New > 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+ ВВОД , чтобы запустить код.

    %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.

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

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

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

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

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

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

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

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

Livy session UI

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

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

  2. Просмотрите журналы драйверов, щелкнув параметр драйвера в журналах.

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

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

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

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

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

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

Справочные материалы