Use o Pyspark com um notebook Jupyter em um cluster EMR da AWS

Natalie Olivo Blocked Unblock Seguir Seguindo 11 de janeiro

O Jupyter Notebook é uma ferramenta incrível para aprender e solucionar problemas de código. Aqui está um blog para mostrar como aproveitar essa poderosa ferramenta enquanto aprende Spark!

Spark é útil se você estiver fazendo algo computacionalmente intenso que pode ser paralelizado. Confira esta pergunta do Quora para mais informações.

Este blog será sobre como configurar a infraestrutura para usar o Spark por meio do AWS Elastic Map Reduce (AWS EMR) e do Jupyter Notebook.

Navegue para o AWS EMR

Você verá o seguinte na parte superior da tela:

Clique em "Criar cluster"

Selecione Opções Avançadas

No topo da tela

Replicar as seguintes capturas de tela

Eu destaquei nos itens em amarelo que você precisa mudar dos padrões, exceto quando se trata dos Tipos de Nós no Passo 2. Isso vai depender de quão intensamente computacionalmente é sua tarefa. Se você está apenas testando coisas, os recursos podem ser bem pequenos. As instâncias que começam com 'g' são instâncias de GPU e são melhores para executar o Spark.

Se você planeja chamar dados ou arquivos de um bucket do S3, assegure-se de estar no mesmo VPC que o bucket do S3.

Veja o “Adicionar ação bootstrap”?

Ok, aqui é onde você instalaria as Ações de Bootstrap. As ações do Bootstrap são executadas como o usuário do Hadoop por padrão. Você pode executar uma ação de bootstrap com privilégios de root usando o sudo.

As Ações de Bootstrap são a maneira mais eficiente de instalar Pacotes Python adicionais em seus outros núcleos. Com base no software que escolhemos instalar na configuração de software, o Anaconda já estará instalado neles. Para o script de coleta de dados 990, o pacote adicional que precisaremos é xmltodict.

Salvaremos uma ação de bootstrap que contenha o seguinte script como 990_boot.sh e armazená-lo em um bucket do S3 e depois adicioná-lo.

 sudo pip instalar xmltodict 

Certifique-se de incluir o sudo!

Certifique-se de escolher um par de chaves EC2 ao qual você tenha acesso

Por que escolher esses grupos de segurança?

No painel do EC2, deve haver as seguintes regras de entrada.

Neste exemplo, a fonte é 0.0.0.0/0, que é todos os endereços IP. Para tornar isso mais seguro, insira seu próprio endereço IP.

Como verificar: acesse o painel do EC2, clique em Grupos de segurança, encontre seu grupo e adicione regras personalizadas:

O 22 permite SSH a partir de um computador local, o 888x permite que você veja o Jupyter Notebook. Como nota, esta é uma captura de tela antiga; Eu fiz o meu 8880 para este exemplo.

Agora vá para a linha de comando local; vamos para o SSH no cluster do EMR.

Em geral, não compartilhe seu DNS público na Internet. Este é um dos meus antigos.

Resultado:

Encontre a sua versão Anaconda

https://repo.continuum.io/archive/ e copie / cole o caminho de arquivo na próxima etapa. Escolha o Python 3.6 ou inferior porque, neste momento, não acho que seja possível atualizar os nós de trabalho até o 3.7. Me deixe uma dica nos comentários se for!

Instale o Anaconda

Coloque o seu caminho de arquivo a partir do último passo aqui:

 wget https://repo.continuum.io/archive/Anaconda2-2018.12-Linux-x86_64.sh 

pressione Enter

 bash Anaconda2–2018.12-Linux-x86_64.sh 

pressione enter, e continue pressionando enter para fazer o seu caminho através dos termos e condições

escreva sim,

pressione enter para confirmar a localização

digite sim para adicionar a variáveis de ambiente para que o Python funcione

 qual python / usr / bin / python 

pressione Enter

 fonte .bashrc 

Aguarde a instalação dos pacotes.

Configurar o Spark w Jupyter

Digite cada uma das seguintes linhas no prompt de comando do EMR, pressionando enter entre cada uma delas:

 exportar PYSPARK_DRIVER_PYTHON = jupyter 
 exportar PYSPARK_DRIVER_PYTHON_OPTS = 'notebook - sem navegador - porta = 8888' 
 fonte ~ / .bashrc 

Digite pyspark no seu prompt de comando do EMR

Resultado:

Veja esse token destacado? copie.

Abra o Jupyter Notebook no seu navegador

Digite o seguinte na sua barra de endereços: localhost: 8880
Resultado: uma página para colar o token da última etapa e efetuar login.

Yay! Você fez isso!

Recursos:

https://medium.com/@alexjsanchez/python-3-notebooks-on-aws-ec2-in-15-mostly-easy-steps-2ec5e662c6c6

https://medium.com/@Vatsal410/running-pyspark-on-an-aws-cluster-through-jupyter-notebook-fe28f6ef47a4

Versão Errada do Erro Python:

https://aws.amazon.com/premiumsupport/knowledge-center/emr-pyspark-python-3x/

Texto original em inglês.