¿Por qué la aplicación YARN sigue utilizando recursos una vez finalizado el trabajo de Spark que he ejecutado en Amazon EMR?

4 minutos de lectura
0

Estoy ejecutando un cuaderno Jupyter de o de Zeppelin en mi clúster de Amazon EMR. La aplicación YARN continúa ejecutándose incluso después de completar el trabajo de Apache Spark que he enviado.

Breve descripción

Cuando ejecuta un cuaderno Spark en Zeppelin o Jupyter, Spark inicia un intérprete. El intérprete crea una aplicación YARN. Esta aplicación es el controlador de Spark que aparece al enumerar las aplicaciones. El controlador no termina cuando se acaba de ejecutar un trabajo desde el cuaderno. Por diseño, el controlador de Spark permanece activo para poder solicitar contenedores de aplicaciones para ejecutar código sobre la marcha. La desventaja es que la aplicación YARN podría estar utilizando los recursos que otros trabajos necesitan. Para resolver este problema, puede detener manualmente la aplicación YARN. Como alternativa, puede establecer un valor de tiempo de espera que detenga automáticamente la aplicación.

Resolución

Zeppelin

Opción 1: Reiniciar el intérprete de Spark

Antes de empezar, asegúrese de tener permisos para reiniciar el intérprete en Zeppelin.

1.Abra Zeppelin.

2.    En la lista desplegable situada junto al nombre de usuario, seleccione Intérprete.

3.Busca el intérprete de Spark y, a continuación, seleccione reinicia. Zeppelin termina el trabajo de YARN cuando se reinicia el intérprete.

Opción 2: Detener el trabajo de YARN manualmente

Antes de empezar, asegúrese de lo siguiente:

  • Tiene acceso SSH al clúster de Amazon EMR.
  • Tiene permiso para ejecutar los comandos YARN.

Use el comando -kill para cerrar la aplicación. En el siguiente ejemplo, sustituya application\ _id por el ID de la aplicación.

yarn application -kill application_id

Opción 3: Establecer un valor de tiempo de espera del intérprete

Las versiones 0.8.0 y posteriores de Zeppelin (disponibles en las versiones 5.18.0 y posteriores de Amazon EMR) incluyen un administrador del ciclo de vida para los intérpretes. Utilice la configuración TimeoutLifecycleManager para terminar los intérpretes después de un período de espera de inactividad especificado:

1.Cree un archivo etc/zeppelin/conf/zeppelin-site.xml con el siguiente contenido. En este ejemplo, el período de tiempo de espera se establece en 120 000 milisegundos (2 minutos). Seleccione un valor de tiempo de espera que sea adecuado para su entorno.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>

<property>
  <name>zeppelin.interpreter.lifecyclemanager.class</name>
  <value>org.apache.zeppelin.interpreter.lifecycle.TimeoutLifecycleManager</value>
  <description>This is the LifecycleManager class for managing the lifecycle of interpreters. The interpreter terminates after the idle timeout period.</description>
</property>

<property>
  <name>zeppelin.interpreter.lifecyclemanager.timeout.checkinterval</name>
  <value>60000</value>
  <description>The interval for checking whether the interpreter has timed out, in milliseconds.</description>
</property>

<property>
  <name>zeppelin.interpreter.lifecyclemanager.timeout.threshold</name>
  <value>120000</value>
  <description>The idle timeout limit, in milliseconds.</description>
</property>
</configuration>

2.Ejecute los siguientes comandos para reiniciar Zeppelin:

$ sudo stop zeppelin
$  sudo start zeppelin

Jupyter

Opción 1: Apagar el cuaderno manualmente

Una vez finalizado el trabajo, utilice uno de los siguientes métodos para detener el núcleo en la interfaz de usuario de Jupyter:

  • En la interfaz del cuaderno de Jupyter, abra el menú Archivo y, a continuación, seleccione Cerrar y detener.
  • En el panel de Jupyter, abre la pestaña En ejecución. Seleccione Apagar para el cuaderno que desee detener.

Opción 2: Apagar el núcleo manualmente

Desde la interfaz del cuaderno de Jupyter, abra el menú Núcleo y, a continuación, seleccione Apagar.

Opción 3: Configurar el atributo de tiempo de espera

Si cierra la pestaña del cuaderno o la ventana del navegador antes de apagar el núcleo, el trabajo YARN continúa ejecutándose. Para evitar que esto suceda, configure el atributo NotebookApp.shutdown_no_activity_timeout. Este atributo finaliza el trabajo YARN después de un período de tiempo de espera de inactividad especificado, incluso si cierra la pestaña o la ventana del navegador.

Haga lo siguiente para configurar el atributo NotebookApp.shutdown_no_activity_timeout:

1.Abra el archivo /etc/jupyter/jupyter_notebook_config.py en el nodo maestro y, a continuación, añada una entrada similar a la siguiente. En este ejemplo, el atributo timeout se establece en 120 segundos. Seleccione un valor de tiempo de espera que sea adecuado para su entorno.

c.NotebookApp.shutdown_no_activity_timeout = 120

2.Ejecute los siguientes comandos para reiniciar jupyterhub:

sudo docker stop jupyterhub
sudo docker start jupyterhub

Información relacionada

Apache Zeppelin

Consideraciones al utilizar Zeppelin en Amazon EMR

Cuaderno de Jupyter en Amazon EMR

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años