Instale o Jupyter Notebook no seu computador e conecte-se ao Apache Spark no HDInsight

Neste artigo, você aprenderá a instalar o Jupyter Notebook com os kernels personalizados PySpark (para Python) e Apache Spark (para Scala) com o Spark magic. Em seguida, conecte o bloco de anotações a um cluster HDInsight.

Há quatro etapas principais envolvidas na instalação do Jupyter e na conexão com o Apache Spark no HDInsight.

  • Configure o cluster Spark.
  • Instale o Jupyter Notebook.
  • Instale os kernels PySpark e Spark com a magia Spark.
  • Configure o Spark magic para acessar o cluster do Spark no HDInsight.

Para obter mais informações sobre kernels personalizados e magia do Spark, consulte Kernels disponíveis para Jupyter Notebooks com clusters Apache Spark Linux no HDInsight.

Pré-requisitos

  • Um cluster do Apache Spark no HDInsight. Para obter instruções, veja Criar clusters do Apache Spark no Azure HDInsight. O bloco de anotações local se conecta ao cluster HDInsight.

  • Familiaridade com a utilização de Jupyter Notebooks com o Spark no HDInsight.

Instale o Jupyter Notebook no seu computador

Instale o Python antes de instalar o Jupyter Notebooks. A distribuição Anaconda instalará o Python e o Jupyter Notebook.

Faça o download do instalador do Anaconda para sua plataforma e execute a configuração. Ao executar o assistente de configuração, certifique-se de selecionar a opção para adicionar Anaconda à sua variável PATH. Consulte também, Instalando o Jupyter usando o Anaconda.

Instale o Spark magic

  1. Insira o comando pip install sparkmagic==0.13.1 para instalar o Spark magic para clusters HDInsight versão 3.6 e 4.0. Consulte também a documentação do sparkmagic.

  2. Verifique se ipywidgets está instalado corretamente executando o seguinte comando:

    jupyter nbextension enable --py --sys-prefix widgetsnbextension
    

Instalar kernels PySpark e Spark

  1. Identifique onde sparkmagic está instalado digitando o seguinte comando:

    pip show sparkmagic
    

    Em seguida, altere seu diretório de trabalho para o local identificado com o comando acima.

  2. No seu novo diretório de trabalho, digite um ou mais dos comandos abaixo para instalar o(s) kernel(s) desejado(s):

    Kernel Comando
    Spark jupyter-kernelspec install sparkmagic/kernels/sparkkernel
    SparkR jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
    PySpark jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
    PySpark3 jupyter-kernelspec install sparkmagic/kernels/pyspark3kernel
  3. Opcional. Digite o comando abaixo para ativar a extensão do servidor:

    jupyter serverextension enable --py sparkmagic
    

Configurar a magia do Spark para se conectar ao cluster HDInsight Spark

Nesta seção, você configura a magia do Spark instalada anteriormente para se conectar a um cluster do Apache Spark.

  1. Inicie o shell Python com o seguinte comando:

    python
    
  2. As informações de configuração do Jupyter são normalmente armazenadas no diretório inicial dos usuários. Digite o seguinte comando para identificar o diretório inicial e crie uma pasta chamada .sparkmagic. O caminho completo será produzido.

    import os
    path = os.path.expanduser('~') + "\\.sparkmagic"
    os.makedirs(path)
    print(path)
    exit()
    
  3. Dentro da pasta .sparkmagic, crie um arquivo chamado config.json e adicione o seguinte trecho JSON dentro dele.

    {
      "kernel_python_credentials" : {
        "username": "{USERNAME}",
        "base64_password": "{BASE64ENCODEDPASSWORD}",
        "url": "https://{CLUSTERDNSNAME}.azurehdinsight.net/livy"
      },
    
      "kernel_scala_credentials" : {
        "username": "{USERNAME}",
        "base64_password": "{BASE64ENCODEDPASSWORD}",
        "url": "https://{CLUSTERDNSNAME}.azurehdinsight.net/livy"
      },
    
      "custom_headers" : {
        "X-Requested-By": "livy"
      },
    
      "heartbeat_refresh_seconds": 5,
      "livy_server_heartbeat_timeout_seconds": 60,
      "heartbeat_retry_seconds": 1
    }
    
  4. Faça as seguintes edições no arquivo:

    Valor do modelo Novo valor
    {NOME DE UTILIZADOR} Login de cluster, o padrão é admin.
    {CLUSTERDNSNAME} Nome do cluster
    {BASE64ENCODEDPASSWORD} Uma senha codificada base64 para sua senha real. Você pode gerar uma senha base64 em https://www.url-encode-decode.com/base64-encode-decode/.
    "livy_server_heartbeat_timeout_seconds": 60 Continue se estiver usando sparkmagic 0.12.7 (clusters v3.5 e v3.6). Se estiver usando sparkmagic 0.2.3 (clusters v3.4), substitua por "should_heartbeat": true.

    Você pode ver um arquivo de exemplo completo no exemplo config.json.

    Gorjeta

    Os batimentos cardíacos são enviados para garantir que as sessões não sejam vazadas. Quando um computador entra em repouso ou é desligado, o batimento cardíaco não é enviado, resultando na limpeza da sessão. Para clusters v3.4, se você deseja desabilitar esse comportamento, você pode definir a configuração livy.server.interactive.heartbeat.timeout Livy para 0 a partir da interface do usuário do Ambari. Para clusters v3.5, se você não definir a configuração 3.5 acima, a sessão não será excluída.

  5. Inicie o Jupyter. Use o seguinte comando no prompt de comando.

    jupyter notebook
    
  6. Verifique se você pode usar a magia do Spark disponível com os kernels. Siga os seguintes passos.

    a. Crie um novo bloco de notas. No canto direito, selecione Novo. Você deve ver o kernel padrão Python 2 ou Python 3 e os kernels que você instalou. Os valores reais podem variar dependendo das opções de instalação. Selecione PySpark.

    Available kernels in Jupyter Notebook.

    Importante

    Depois de selecionar Novo , revise seu shell para verificar se há erros. Se você vir o erro TypeError: __init__() got an unexpected keyword argument 'io_loop' , você pode estar enfrentando um problema conhecido com certas versões do Tornado. Em caso afirmativo, pare o kernel e, em seguida, faça o downgrade da instalação do Tornado com o seguinte comando: pip install tornado==4.5.3.

    b. Execute o seguinte trecho de código.

    %%sql
    SELECT * FROM hivesampletable LIMIT 5
    

    Se você conseguir recuperar a saída com êxito, sua conexão com o cluster HDInsight será testada.

    Se você quiser atualizar a configuração do bloco de anotações para se conectar a um cluster diferente, atualize o config.json com o novo conjunto de valores, conforme mostrado na Etapa 3, acima.

Por que devo instalar o Jupyter no meu computador?

Razões para instalar o Jupyter no seu computador e, em seguida, conectá-lo a um cluster Apache Spark no HDInsight:

  • Fornece a opção de criar seus blocos de anotações localmente, testar seu aplicativo em relação a um cluster em execução e, em seguida, carregar os blocos de anotações para o cluster. Para carregar os blocos de anotações no cluster, você pode carregá-los usando o Jupyter Notebook em execução ou o cluster ou salvá-los /HdiNotebooks na pasta na conta de armazenamento associada ao cluster. Para obter mais informações sobre como os blocos de anotações são armazenados no cluster, consulte Onde os Blocos de Anotações do Jupyter são armazenados?
  • Com os blocos de anotações disponíveis localmente, você pode se conectar a diferentes clusters do Spark com base em seus requisitos de aplicativo.
  • Você pode usar o GitHub para implementar um sistema de controle de origem e ter controle de versão para os notebooks. Você também pode ter um ambiente colaborativo onde vários usuários podem trabalhar com o mesmo bloco de anotações.
  • Você pode trabalhar com blocos de anotações localmente sem sequer ter um cluster. Você só precisa de um cluster para testar seus blocos de anotações, não para gerenciar manualmente seus blocos de anotações ou um ambiente de desenvolvimento.
  • Pode ser mais fácil configurar seu próprio ambiente de desenvolvimento local do que configurar a instalação do Jupyter no cluster. Pode tirar partido de todo o software que instalou localmente sem configurar um ou mais clusters remotos.

Aviso

Com o Jupyter instalado em seu computador local, vários usuários podem executar o mesmo bloco de anotações no mesmo cluster do Spark ao mesmo tempo. Em tal situação, várias sessões Livy são criadas. Se você se deparar com um problema e quiser depurá-lo, será uma tarefa complexa rastrear qual sessão do Livy pertence a qual usuário.

Próximos passos