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
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.Verifique se
ipywidgets
está instalado corretamente executando o seguinte comando:jupyter nbextension enable --py --sys-prefix widgetsnbextension
Instalar kernels PySpark e Spark
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.
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
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.
Inicie o shell Python com o seguinte comando:
python
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()
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 }
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 usandosparkmagic 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 para0
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.Inicie o Jupyter. Use o seguinte comando no prompt de comando.
jupyter notebook
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.
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.