Compartilhar via


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

Importante

O Azure HDInsight no AKS se aposentou em 31 de janeiro de 2025. Saiba mais com este comunicado.

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

Esse recurso está atualmente em versão prévia. Os termos de uso complementares para o Microsoft Azure Previews incluem mais termos legais que se aplicam aos recursos do Azure que estão em versão beta, em versão prévia ou ainda não lançados em disponibilidade geral. Para obter informações sobre essa versão prévia específica, consulte Azure HDInsight em informações de visualização do AKS. Para perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para mais atualizações sobre a Comunidade do Azure HDInsight .

Depois que o cluster é criado, o usuário pode usar variadas interfaces para enviar e gerenciar trabalhos por meio de diferentes métodos.

  • usando o Jupyter
  • usando Zeppelin
  • usando o ssh (comando spark-submit)

Usando o Jupyter

Pré-requisitos

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

O Jupyter Notebook é um ambiente de notebook interativo que dá suporte a várias linguagens de programação.

Criar um Jupyter Notebook

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

    Captura de tela de como selecionar o Jupyter Notebook.

  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 notebook criado e aberto com o nome Untitled(Untitled.ipynb).

    Nota

    Usando o PySpark ou o kernel do Python 3 para criar um notebook, a sessão do Spark é criada automaticamente para você quando você executa a primeira célula de código. Você não precisa 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 no Jupyter.

    Captura de tela 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. Plotar um grafo com Salário e idade como eixos X e Y

  5. No mesmo bloco de anotações, cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione 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 grafo.

Salvar o Bloco de Anotações

  1. Na barra de menus do notebook, 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 Parar. 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 notas.

Usando blocos de anotações do Apache Zeppelin

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

Pré-requisitos

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

Iniciar um bloco de anotações do Apache Zeppelin

  1. Navegue até a página Visão geral do cluster do Apache Spark e selecione o notebook Zeppelin nos painéis do Cluster. Isso solicita a autenticação e a abertura da página do Zeppelin.

    Captura de tela de como selecionar Zeppelin.

  2. Crie um novo bloco de anotações. No painel de cabeçalho, navegue até Notebook > Criar nova anotação. Verifique se o cabeçalho do bloco de anotações mostra um status de conexão. Ele indica um ponto verde no canto superior direito.

    Captura de tela de como criar o 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 executar o snippet no parágrafo. O status no canto direito do parágrafo deve progredir de PRONTO, PENDENTE, EXECUTANDO para FINALIZADO. 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 submissão de trabalhos do Spark

  1. Criar um arquivo usando o seguinte comando '#vim samplefile.py'

  2. Este comando abre o arquivo vim

  3. Cole o código a seguir 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 método a seguir.

    1. Pressione o botão Escape
    2. Insira o comando :wq
  5. Execute o comando a seguir 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 em AKS

Interface de histórico do Spark

  1. Clique na interface do Servidor de Histórico do Spark na aba visão geral.

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

  2. Selecione a execução recente na UI usando o mesmo ID do app.

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

  3. Exiba os ciclos do Grafo Acíclico Direcionado e os estágios do trabalho na interface do servidor de histórico do Spark.

    captura de tela do ciclo DAG.

Interface do Usuário da Sessão Livy

  1. Para abrir a interface do usuário da sessão do 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 do Livy.

  2. Visualize os registros do driver clicando na opção do driver em registros.

de interface do usuário do Yarn

  1. Na aba 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 pela mesma ID do aplicativo.

  3. Clique na ID do Aplicativo no Yarn para exibir logs detalhados do trabalho.

    Exibir Logs.

Referência