Quiero solucionar los problemas de las aplicaciones de Apache Spark que no se ejecutan en mi cuaderno de Amazon EMR.
Descripción corta
Es posible que las aplicaciones de Spark que se ejecutan en un cuaderno de Amazon EMR no se inicien y aparezca el siguiente error:
"The code failed because of a fatal error: Session 4 did not start up in 60 seconds."
Resolución
Comprobación de los recursos del clúster
Asegúrate de que Spark tenga suficientes recursos disponibles en el clúster para que Jupyter pueda crear un contexto de Spark. Para comprobar los recursos disponibles, utiliza las métricas de Amazon CloudWatch o el Administrador de recursos.
Asegurarse de que las bibliotecas de Sparkmagic estén configuradas correctamente
Ponte en contacto con tu administrador de Jupyter para asegurarte de que las bibliotecas de Sparkmagic están configuradas correctamente.
Reinicio del kernel del cuaderno
Sigue estos pasos:
- Abre la consola de Amazon EMR.
- En la barra de navegación, elige Espacios de trabajo (cuadernos).
- Selecciona el espacio de trabajo en la lista Espacios de trabajo (cuadernos) y, a continuación, elige Inicio rápido. O elige el espacio de trabajo de la lista y elige Adjuntar y, a continuación, elige Iniciar en JupyterLab o elige Iniciar en Jupyter.
- Elige Kernel y, a continuación, elige Reiniciar Kernel.
Aumento del tiempo de espera de la sesión de Spark para JupyterLab
Sigue estos pasos:
-
Abre la consola de Amazon EMR.
-
En la barra de navegación, elige Espacios de trabajo (cuadernos).
-
Selecciona el espacio de trabajo en la lista Espacios de trabajo (cuadernos) y, a continuación, elige Inicio rápido. Se abre una nueva pestaña del navegador en el editor de JupyterLab.
-
Abre el terminal del cuaderno.
-
Ejecuta el siguiente comando para abrir el archivo config.json:
vi /home/notebook/.sparkmagic/config.json
Nota: Si has instalado la aplicación JupyterHub en la instancia principal de Amazon EMR, ejecuta el siguiente comando:
vi /etc/jupyter/conf/config.json
-
Agrega o actualiza la opción livy_session_startup_timeout_seconds: ### en el archivo config.json.
-
Reinicia todos los kernels.
Nota: Si has instalado la aplicación JupyterHub en la instancia principal de Amazon EMR, reinicia el contenedor de JupyterHub.
Memoria del controlador de Tune Spark
Modifica la memoria del controlador de Spark que la aplicación de cuaderno de Jupyter usa para controlar la asignación de recursos. Para obtener más información, consulta ¿Cómo puedo modificar la configuración de Spark en un espacio de trabajo de Amazon EMR Studio?
Asegurarse de que el servicio Livy esté en buen estado
Comprobación del estado del servidor Livy que se ejecuta en la instancia del nodo maestro
Sigue estos pasos:
-
Para comprobar el estado del livy-server, ejecuta el siguiente comando:
sudo systemctl status livy-server
-
Si el estado del servidor es inactivo, ejecuta el siguiente comando para reiniciar el livy-server:
sudo systemctl start livy-server
Aumento de la memoria del servidor Livy
De forma predeterminada, el cliente de cuaderno intenta conectarse al servidor Apache Livy durante 90 segundos. Si el servidor Livy no responde en 90 segundos, el cliente generará un tiempo de espera. La razón más común por la que el servidor Livy no responde es la falta de recursos. Para solucionar este problema, aumenta la memoria del servidor Livy.
Sigue estos pasos:
-
Usa SSH para conectarte al nodo maestro.
-
Agrega la siguiente propiedad al archivo /etc/livy/conf/livy-env.sh:
export LIVY_SERVER_JAVA_OPTS="-Xmx8g" (option to your value)
-
Reinicia el servidor Livy.
sudo systemctl stop livy-server; sudo systemctl start livy-server
Uso del modo de clúster en lugar del modo de cliente en Livy
Cuando envías aplicaciones de Spark en el cuaderno en modo de cliente, el controlador de Spark se ejecuta como el subproceso del servidor Livy. Si ejecutas un subproceso, es posible que no tengas recursos en el nodo maestro. Para evitar los errores de Livy causados por la insuficiencia de recursos, cambia el modo de despliegue al modo de clúster. Cuando ejecutas aplicaciones de Spark en modo de clúster, el controlador se ejecuta en los nodos centrales y de tarea, en lugar del nodo maestro.
Sigue estos pasos:
-
Conexión al nodo maestro mediante SSH.
-
Agrega el siguiente parámetro al archivo /etc/livy/conf/livy.conf:
livy.spark.deploy-mode cluster
-
Reinicia el servidor Livy:
sudo systemctl stop livy-server; sudo systemctl start livy-server