Partilhar via


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

Importante

O Azure HDInsight no AKS foi desativado em 31 de janeiro de 2025. Saiba mais com este anúncio.

Você precisa migrar suas cargas de trabalho para Microsoft Fabric ou um produto equivalente do Azure para evitar o encerramento abrupto de suas cargas de trabalho.

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 disponíveis para disponibilidade geral. Para obter informações sobre esta pré-visualização específica, consulte informações de pré-visualização do Azure HDInsight no AKS. Para perguntas ou sugestões de funcionalidades, envie uma solicitação em AskHDInsight com os detalhes e siga-nos para obter mais atualizações na Comunidade do Azure HDInsight .

Depois de criado o cluster, o utilizador pode usar várias interfaces para enviar e gerir trabalhos.

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

Usando o Jupyter

Pré-requisitos

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

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

Criar um Jupyter Notebook

  1. Navegue até a página do cluster Apache Spark™ e abra a guia Visão Geral. Clique em Jupyter, e será solicitado que você se autentique para abrir a página da web do Jupyter.

    Captura de ecrã de como selecionar o notebook 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).

    Observação

    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 é necessário 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 para obter mais controles sobre o Jupyter.

    Captura de tela da página do 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é Arquivo > Salvar e Ponto de verificação.

  2. Desligue o notebook para liberar os recursos do cluster: na barra de menus do notebook, navegue até Arquivo > Fechar e Interromper. 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 os notebooks Apache Zeppelin

Os clusters Apache Spark em HDInsight em AKS incluem os 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 em 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 autenticar e abrir a página do Zeppelin.

    Screenshot 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. Confirme que o cabeçalho do bloco de notas mostra um estado 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 do 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 num cluster Apache Spark no HDInsight em AKS

Interface do usuário do Spark History

  1. Clique na UI 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.

Yarn 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 logs.

Referência

  • Apache, Apache Spark, Spark e nomes de projetos de código aberto associados são marcas comerciais da Apache Software Foundation (ASF).