Por que não consigo executar aplicações Spark em meu bloco de anotações EMR?

4 minuto de leitura
0

Não consigo executar minha aplicação Apache Spark em meu bloco de anotações Amazon EMR

Breve descrição

As aplicações Spark executadas em um bloco de anotações EMR podem falhar ao iniciar com a seguinte exceção:

The code failed because of a fatal error:
Session 4 did not start up in 60 seconds.

Resolução

A seguir estão etapas comuns de solução de problemas comuns para a execução de aplicações Spark em seu bloco de anotações EMR:

Verifique os recursos no cluster.

Certifique-se de que o Spark tenha recursos suficientes disponíveis no cluster para que o Jupyter crie um contexto do Spark. Também é possível verificar os recursos disponíveis usando métricas do Amazon CloudWatch ou o Resource Manager.

Certifique-se de que as bibliotecas do Sparkmagic estejam configuradas corretamente.

Entre em contato com o administrador do Jupyter para verificar se as bibliotecas Sparkmagic estão configuradas corretamente.

Reinicie o kernel do bloco de anotações

1.    Abra o console do EMR e selecione Bloco de anotações.

2.    Selecione o bloco de anotações na lista Notebooks (Blocos de anotações) e escolha Open in JupyterLab (Abrir no JupyterLab) ou Open in Jupyter (Abrir no Jupyter). Uma nova guia do navegador será aberta no editor do JupyterLab ou do Jupyter Notebook.

3.    No menu Kernel, selecione Restart Kernel (Reiniciar kernel).

Aumente o tempo limite da sessão do Spark para o JupyterLab.

Para aumentar o tempo limite da sessão do Spark, faça o seguinte:

1.    Abra o console do EMR e selecione Notebook (Bloco de anotações).

2.    Selecione o bloco de anotações na lista Notebooks (Blocos de anotações).

3.    Acesse a interface do usuário da web do Jupyter do bloco de anotações EMR.

4.    Abra o terminal do bloco de anotações EMR.

5.    Abra o arquivo config.json usando o seguinte comando:

vi /home/notebook/.sparkmagic/config.json

5.    Adicione ou atualize a opção livy_session_startup_timeout_seconds: xxx no arquivo config.json.

6.    Reinicie todos os kernels.

Observação: se a aplicação JupyterHub estiver instalada na instância primária do EMR, faça o seguinte procedimento para aumentar o tempo limite da sessão do Spark.

1.    Execute o seguinte comando:

vi /etc/jupyter/conf/config.json

2.    Atualize a opção livy_session_startup_timeout_seconds:60 para o valor desejado e reinicie o contêiner JupyterHub.

Ajuste de memória do driver Spark

Ajuste a memória do driver Spark usada pela aplicação do caderno Jupyter para controlar a alocação de recursos. Para mais informações, veja Como posso modificar a configuração do Spark em um bloco de anotações Amazon EMR?

Certifique-se de que o serviço Apache Livy esteja funcional

Verifique o status do servidor Livy em execução na instância do nó primário

1.    Utilize o seguinte comando para verificar o status servidor Livy:

sudo systemctl status livy-server

2.    Utilize o seguinte comando para reiniciar o servidor Livy se o status estiver como inativo:

sudo systemctl start livy-server

Aumente a memória do servidor Livy

Por padrão, o cliente do bloco de anotações tenta se conectar ao servidor Livy por 90 segundos. Se o servidor Livy não responder em 90 segundos, o cliente gerará um tempo limite. O motivo mais comum da ausência de resposta do servidor Livy é a falta de recursos suficientes. Para corrigir isso, aumente a memória do servidor Livy:

1.    Conecte-se à instância do nó primário usando SSH.

2.    Adicione a seguinte propriedade ao arquivo /etc/livy/conf/livy-env.sh:

export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)

3.    Reinicie o servidor Livy para que as alterações entrem em vigor.

sudo systemctl stop livy-server
sudo systemctl start livy-server

Use o modo cluster em vez do modo cliente no Livy

As aplicações do Spark são enviadas para o bloco de notas no modo cliente e o driver do Spark é executado como o subprocesso do servidor Livy. A execução como um subprocesso pode causar a falta de recursos no nó primário. Para evitar que o Livy falhe devido a recursos insuficientes, altere o modo de implantação para o modo cluster. Ao implementar o modo cluster, o driver é executado como aplicação primária nos nós central e de tarefa, em vez de no nó primário.

Para usar o modo cluster, faça o seguinte:

1.    Conecte-se ao nó primário usando SSH.

2.    Adicione o seguinte parâmetro ao arquivo /etc/livy/conf/livy.conf:

livy.spark.deploy-mode  cluster

3.    Reinicie o servidor Livy para que as alterações entrem em vigor:

sudo systemctl stop livy-server
sudo systemctl start livy-server

AWS OFICIAL
AWS OFICIALAtualizada há um ano