Partilhar via


Enviar e gerenciar trabalhos em um cluster Apache Spark™ no HDInsight no AKS

Nota

Vamos desativar o Azure HDInsight no AKS em 31 de janeiro de 2025. Antes de 31 de janeiro de 2025, você precisará migrar suas cargas de trabalho para o Microsoft Fabric ou um produto equivalente do Azure para evitar o encerramento abrupto de suas cargas de trabalho. Os clusters restantes na sua subscrição serão interrompidos e removidos do anfitrião.

Apenas o apoio básico estará disponível até à data da reforma.

Importante

Esta funcionalidade está atualmente em pré-visualização. Os Termos de Utilização Suplementares para Pré-visualizações do Microsoft Azure incluem mais termos legais que se aplicam a funcionalidades do Azure que estão em versão beta, em pré-visualização ou ainda não disponibilizadas para disponibilidade geral. Para obter informações sobre essa visualização específica, consulte Informações de visualização do Azure HDInsight no AKS. Para perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para obter mais atualizações na Comunidade do Azure HDInsight.

Depois que o cluster é criado, o usuário pode usar várias interfaces para enviar e gerenciar trabalhos por

  • usando Jupyter
  • utilizando Zeppelin
  • Usando SSH (Spark-Submit)

Usando o Jupyter

Pré-requisitos

Um cluster Apache Spark™ no HDInsight no AKS. Para obter mais informações, consulte Criar um cluster do Apache Spark.

O Jupyter Notebook é um ambiente de bloco de notas interativo que suporta várias linguagens de programação.

Criar um Bloco de Notas do Jupyter Notebook

  1. Navegue até a página do cluster Apache Spark™ e abra a guia Visão geral . Clique em Jupyter, ele pede que você autentique e abra a página da web do Jupyter.

    Captura de tela de como selecionar o bloco de anotações Jupyter.

  2. Na página da Web do Jupyter, selecione Novo > PySpark para criar um bloco de anotações.

    Captura de tela da nova página do PySpark.

    Um novo bloco de notas criado e aberto com o nome Untitled(Untitled.ipynb).

    Nota

    Usando o PySpark ou o kernel Python 3 para criar um bloco de anotações, a sessão de faísca é criada automaticamente para você quando você executa a primeira célula de código. Não precisa de criar explicitamente a sessão.

  3. Cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione SHIFT + ENTER para executar o código. Veja aqui mais controles sobre o Jupyter.

    Screenshot da página PySpark com conteúdo.

    %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. Plote um gráfico com Salário e idade como os eixos X e Y

  5. No mesmo bloco de notas, cole o seguinte código numa célula vazia do Jupyter Notebook e, em seguida, prima SHIFT + ENTER para executar o código.

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

    Captura de tela da saída do gráfico.

Guardar o Bloco de Notas

  1. Na barra de menus do bloco de anotações, navegue até Salvar arquivo > e Ponto de verificação.

  2. Desligue o bloco de anotações para liberar os recursos do cluster: na barra de menus do bloco de anotações, navegue até Fechar e Parar Arquivo > . Você também pode executar qualquer um dos blocos de anotações na pasta de exemplos.

    Captura de tela de como salvar os livros de anotações.

Usando notebooks Apache Zeppelin

Os clusters Apache Spark no HDInsight no AKS incluem notebooks Apache Zeppelin. Use os blocos de anotações para executar trabalhos do Apache Spark. Neste artigo, você aprenderá a usar o notebook Zeppelin em um cluster HDInsight no AKS.

Pré-requisitos

Um cluster Apache Spark no HDInsight no AKS. Para obter instruções, consulte Criar um cluster do Apache Spark.

Iniciar um notebook Apache Zeppelin

  1. Navegue até a página Visão geral do cluster Apache Spark e selecione o bloco de anotações Zeppelin nos painéis do cluster. Ele solicita a autenticação e abertura da página do Zeppelin.

    Captura de tela de como selecionar Zeppelin.

  2. Crie um novo bloco de notas. No painel de cabeçalho, navegue até Bloco de Anotações > Criar nova nota. Verifique se o cabeçalho do bloco de anotações mostra um status conectado. Denota um ponto verde no canto superior direito.

    Captura de tela de como criar notebook zeppelin.

  3. Execute o seguinte código no Zeppelin Notebook:

    %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. Selecione o botão Reproduzir para o parágrafo para executar o trecho. O status no canto direito do parágrafo deve progredir de PRONTO, PENDENTE, EM EXECUÇÃO para CONCLUÍDO. A saída aparece na parte inferior do mesmo parágrafo. A captura de tela se parece com a seguinte imagem:

    Captura de tela de como executar o notebook Zeppelin.

    Saída:

    Captura de tela da saída do notebook Zeppelin.

Usando o Spark enviar trabalhos

  1. Crie um ficheiro utilizando o seguinte comando '#vim samplefile.py'

  2. Este comando abre o arquivo vim

  3. Cole o seguinte código no arquivo 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. Salve o arquivo com o seguinte método.

    1. Pressione o botão Escape
    2. Digite o comando :wq
  5. Execute o seguinte comando para executar o trabalho.

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

    Captura de tela mostrando como executar o trabalho de envio do Spark.

Monitorar consultas em um cluster Apache Spark no HDInsight no AKS

Interface do usuário do Spark History

  1. Clique na interface do usuário do Spark History Server na guia Visão geral.

    Captura de tela mostrando a interface do usuário do Spark.

  2. Selecione a execução recente na interface do usuário usando a mesma ID do aplicativo.

    Captura de tela mostrando como executar a interface do usuário do Spark.

  3. Exiba os ciclos do Gráfico Acíclico Direcionado e os estágios do trabalho na interface do usuário do servidor Spark History.

    Captura de tela do ciclo do DAG.

UI da sessão Livy

  1. Para abrir a interface do usuário da sessão Livy, digite o seguinte comando no navegador https://<CLUSTERNAME>.<CLUSTERPOOLNAME>.<REGION>.projecthilo.net/p/livy/ui

    Captura de tela de como abrir a interface do usuário da sessão Livy.

  2. Veja os logs do driver clicando na opção de driver em logs.

Fio UI

  1. Na guia Visão geral, clique em Yarn e abra a interface do usuário do Yarn.

    Captura de tela de como selecionar a interface do usuário do Yarn.

  2. Você pode acompanhar o trabalho executado recentemente pelo mesmo ID de aplicativo.

  3. Clique no ID do aplicativo no Yarn para visualizar os logs detalhados do trabalho.

    Ver registos.

Referência