¿Por qué no puedo ejecutar aplicaciones de Spark en mi cuaderno de EMR?

4 minutos de lectura
0

No puedo ejecutar mi aplicación Apache Spark en mi cuaderno de Amazon EMR

Descripción breve

Es posible que las aplicaciones de Spark que se ejecuten desde un cuaderno de EMR no se inicien con la siguiente excepción:

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

Resolución

Los siguientes son los pasos habituales para solucionar problemas al ejecutar aplicaciones de Spark en su cuaderno de EMR:

Comprobar los recursos del clúster

Asegúrese de que Spark tenga suficientes recursos disponibles en el clúster para que Jupyter pueda crear un contexto de Spark. Puede comprobar los recursos disponibles mediante las métricas de Amazon CloudWatch o el administrador de recursos.

Asegurarse de que las bibliotecas de Sparkmagic estén configuradas correctamente

Póngase en contacto con el administrador de Jupyter para asegurarse de que las bibliotecas de Sparkmagic están configuradas correctamente.

Reiniciar el kernel del cuaderno

1.    Abra la consola de EMR y, a continuación, seleccione Notebook (Cuaderno).

2.    Seleccione el cuaderno en la lista Notebooks (Cuadernos) y, a continuación, elija Open in JupyterLab (Abrir en JupyterLab) o Open in Jupyter (Abrir en Jupyter). Se abre una nueva pestaña del navegador en el editor de JupyterLab o del cuaderno de Jupyter.

3.    En el menú Kernel, seleccione Restart Kernel (Reiniciar kernel).

Aumentar el período de espera de la sesión de Spark para JupyterLab

Para aumentar el período de espera de la sesión de Spark, haga lo siguiente:

1.    Abra la consola de EMR y seleccione Notebook (Cuaderno).

2.    Seleccione el cuaderno en la lista Notebooks (Cuadernos).

3.    Acceda a la interfaz de usuario web Jupyter del cuaderno de EMR.

4.    Abra el terminal del cuaderno de EMR.

5.    Abra el archivo config.json con el siguiente comando:

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

5.    Agregue o actualice la opción livy_session_startup_timeout_seconds: xxx en el archivo config.json.

6.    Reinicie todos los núcleos.

Nota: Si la aplicación JupyterHub está instalada en la instancia principal de EMR, haga lo siguiente para aumentar el tiempo de espera de la sesión de Spark.

1.    Ejecute el siguiente comando:

vi /etc/jupyter/conf/config.json

2.    Actualice la opción livy_session_startup_timeout_seconds:60 a su valor y, a continuación, reinicie el contenedor de JupyterHub.

Ajustar la memoria del controlador de Spark

Ajuste la memoria del controlador de Spark que utiliza la aplicación del cuaderno de Jupyter para controlar la asignación de recursos. Para obtener más información, consulte How can I modify the Spark configuration in an Amazon EMR notebook? (¿Cómo se puede modificar la configuración de Spark en un bloc de notas de Amazon EMR?)

Asegurarse de que el servicio Apache Livy esté en buen estado

Comprobar el estado del servidor Livy que se ejecuta en la instancia del nodo principal

1.    Utilice el siguiente comando para comprobar el estado de livy-server:

sudo systemctl status livy-server

2.    Utilice el siguiente comando para reiniciar livy-server si se encuentra en estado inactivo:

sudo systemctl start livy-server

Aumentar la memoria del servidor Livy

De forma predeterminada, el cliente del portátil intenta conectarse al servidor Livy durante 90 segundos. Si el servidor de Livy no responde en 90 segundos, el cliente genera un tiempo de espera. La razón más común por la que el servidor Livy no responde es que no hay recursos suficientes. Para solucionar este problema, aumente la memoria del servidor Livy:

1.    Conéctese a la instancia del nodo principal mediante SSH.

2.    Agregue la siguiente propiedad al archivo /etc/livy/conf/livy-env.sh:

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

3.    Para que los cambios surtan efecto, reinicie el servidor Livy.

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

Utilizar el modo de clúster en lugar del modo de cliente en Livy

Las aplicaciones de Spark se envían al cuaderno en modo de cliente y el controlador Spark se ejecuta como un subproceso del servidor Livy. La ejecución como un subproceso puede provocar una falta de recursos en el nodo principal. Para evitar que Livy falle por falta de recursos, cambie el modo de implementación al modo de clúster. Al ejecutarse en modo de clúster, el controlador se ejecuta en la aplicación principal, en los nodos central y de tareas, en lugar de en el nodo principal.

Para usar el modo de clúster, haga lo siguiente:

1.    Conéctese al nodo principal mediante SSH.

2.    Agregue el siguiente parámetro al archivo /etc/livy/conf/livy.conf:

livy.spark.deploy-mode  cluster

3.    Para que los cambios surtan efecto, reinicie los servidores:

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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año