Quero solucionar problemas de aplicações do Apache Spark que não são executadas no meu caderno do Amazon EMR.
Breve descrição
As aplicações Spark que são executadas em um caderno do Amazon EMR podem falhar ao iniciar com o seguinte erro:
"The code failed because of a fatal error: Session 4 did not start up in 60 seconds."
Resolução
Verifique os recursos no cluster
Certifique-se de que o Spark tenha recursos disponíveis suficientes no cluster para que o Jupyter crie um contexto do Spark. Para verificar os recursos disponíveis, use as 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 garantir que as bibliotecas do Sparkmagic estejam configuradas corretamente.
Reinicie o kernel do caderno
Conclua as etapas a seguir:
- Abra o console do Amazon EMR.
- Na barra de navegação, clique em Workspaces (blocos de anotações).
- Selecione o espaço de trabalho na lista Workspaces (blocos de anotações) e clique em Início rápido. Ou selecione o espaço de trabalho na lista e clique em Anexar e, em seguida, em Iniciar no JupyterLab ou em Iniciar no Jupyter.
- Selecione Kernel e, em seguida, clique em Reiniciar kernel.
Aumente o tempo limite da sessão Spark no JupyterLab
Conclua as etapas a seguir:
-
Abra o console do Amazon EMR.
-
Na barra de navegação, clique em Workspaces (blocos de anotações).
-
Selecione o espaço de trabalho na lista Workspaces (blocos de anotações) e clique em Início rápido. Uma nova guia do navegador é aberta no editor do JupyterLab.
-
Abra o terminal do caderno.
-
Execute o comando a seguir para abrir o arquivo config.json:
vi /home/notebook/.sparkmagic/config.json
Observação: se você instalou a aplicação JupyterHub na instância primária do Amazon EMR, execute o seguinte comando:
vi /etc/jupyter/conf/config.json
-
Adicione ou atualize a opção livy_session_startup_timeout_seconds: ### no arquivo config.json.
-
Reinicie todos os kernels.
Observação: se você instalou a aplicação JupyterHub na instância primária do Amazon EMR, reinicie o contêiner do JupyterHub.
Ajuste a memória do driver Spark
Modifique a memória do driver Spark que a aplicação de caderno do Jupyter usa para controlar a alocação de recursos. Para obter mais informações, consulte Como posso modificar a configuração do Spark em um caderno Amazon EMR?
Certifique-se de que o serviço Livy esteja íntegro
Verifique o status do servidor Livy que é executado na instância do nó primário
Conclua as etapas a seguir:
-
Para verificar o status de livy-server, execute o seguinte comando:
sudo systemctl status livy-server
-
Se o status do servidor estiver inativo, execute o seguinte comando para reiniciar o livy-server:
sudo systemctl start livy-server
Aumente a memória do servidor Livy
Por padrão, o cliente do caderno tenta se conectar ao servidor Apache Livy por 90 segundos. Se o servidor Livy não responder em 90 segundos, o cliente gerará um tempo limite. O motivo mais comum pelo qual o servidor Livy não responde é a falta de recursos. Para corrigir isso, aumente a memória do servidor Livy.
Conclua as etapas a seguir:
-
Use SSH para se conectar à instância do nó primário.
-
Adicione a seguinte propriedade ao arquivo /etc/livy/conf/livy-env.sh:
export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
-
Reinicie o servidor Livy.
sudo systemctl stop livy-server; sudo systemctl start livy-server
Use o modo de cluster em vez do modo cliente no Livy
Quando você envia aplicações Spark no caderno no modo cliente, o driver Spark é executado como o subprocesso do servidor Livy. Se você executar um subprocesso, pode enfrentar falta de recursos no nó primário. Para evitar falhas do Livy causadas por recursos insuficientes, altere o modo de implantação para o modo de cluster. Quando você executa aplicações Spark no modo de cluster, o driver é executado nos nós centrais e de tarefas, em vez do nó primário.
Conclua as etapas a seguir:
-
Use SSH para se conectar ao nó primário.
-
Adicione o seguinte parâmetro ao arquivo /etc/livy/conf/livy.conf:
livy.spark.deploy-mode cluster
-
Reinicie o servidor Livy:
sudo systemctl stop livy-server; sudo systemctl start livy-server