Compartilhar via


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

Importante

Esse recurso está atualmente na visualização. Os Termos de uso complementares para versões prévias do Microsoft Azure 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, confira Informações sobre a versão prévia do Azure HDInsight no AKS. Caso tenha perguntas ou sugestões de recursos, envie uma solicitação no AskHDInsight com os detalhes e siga-nos para ver mais atualizações sobre a Comunidade do Azure HDInsight.

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

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

Usando o Jupyter

Pré-requisitos

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

O Jupyter Notebook é um ambiente de notebook interativo que oferece 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 no Jupyter, ele solicita que você 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 notebook.

    Captura de tela da nova página do PySpark.

    Um notebook é criado e aberto com o nome Untitled(Untitled.ipynb).

    Observação

    Ao usar o kernel do PySpark ou do Python 3 para criar um notebook, a sessão do spark será criada automaticamente quando você executar a primeira célula de código. Você não precisa criar a sessão explicitamente.

  3. Cole o código a seguir em uma célula vazia do Jupyter Notebook e pressione SHIFT + ENTER para executar o código. Confira aqui como obter mais controles no 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. Plotar um grafo com Salário e idade como os eixos X e Y

  5. No mesmo notebook, 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 notebook

  1. Na barra de menus do notebook, navegue até Arquivo > Salvar e Ponto de Verificação.

  2. Desligue o notebook para lançar os recursos de cluster: na barra de menus do notebook, navegue até Arquivo > Fechar e Interromper. Você também pode executar qualquer um dos notebooks na pasta de exemplos.

    Captura de tela de como salvar os notebooks.

Usar notebooks do Apache Zeppelin

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

Pré-requisitos

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

Inicie um notebook do Apache Zeppelin

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

    Captura de tela de como selecionar o Zeppelin.

  2. Criar um notebook novo No painel de cabeçalho, navegue até Notebook > Criar anotação. Verifique se o cabeçalho do notebook mostra um status conectado. Isso é indicado por um ponto verde no canto superior direito.

    Captura de tela de como criar o notebook do Zeppelin.

  3. Execute o seguinte código em um notebook do 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. Pressione o botão Executar do parágrafo para executar o snippet. O status no canto direito do parágrafo deve progredir de PRONTO, PENDENTE, EM EXCECUÇÃO para CONCLUÍDO. A saída é exibida 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 do Zeppelin.

    Saída:

    Captura de tela da saída do notebook do Zeppelin.

Usando o envio de trabalhos do Spark

  1. Crie um arquivo usando o seguinte comando: `#vim samplefile.py'

  2. Esse 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 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 do Apache Spark no Azure HDInsight HKS

Interface do usuário do histórico do Spark

  1. Clique na interface do usuário do Servidor de Histórico do Spark na guia visão geral.

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

  2. Selecione a execução recente da 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 grafo direcionado acíclico e as fases do trabalho na interface do usuário do servidor de Histórico do Spark.

    Captura de tela do ciclo DAG.

Interface do usuário da sessão do Livy

  1. Para abrir a interface do usuário da sessão do Livy, digite o seguinte comando no seu 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. Exiba os logs de driver clicando na opção driver em logs.

Interface do usuário do YARN

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

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

    Veja os logs.

Referência