¿Cómo liberar memoria en los Notebooks?
En este tutorial se va a explicar cómo liberar memoria en el software sobre el que se soportan los Notebooks: Zeppelin.
Antes de seguir este tutorial, es imprescindible comprender la configuración de los Notebooks (disponible en el tutorial (Notebooks) (ES) Configuración de los intérpretes en el módulo Notebooks).
Como explica el anterior tutorial, existen tres posibilidades de configuración de los intérpretes:
Globally: Un proceso de intérprete para todos los Notebooks.
Per Note: Un proceso de intérprete para cada Notebook.
Per User: Un proceso de intérprete para cada usuario de Zeppelin (diferente a usuario de OnesaitPlatform)..
Algunos intérpretes, como Spark utilizan una memoria RAM mínima por proceso de 1 GB, por lo que cuando está configurado de tipo Per Note implicará que habrá tantos procesos como Notebooks ejecutados.
A continuación se muestra una tabla de ejemplo:
Notebooks ejecutados | Configuración intérprete | Memoria mínima del intérprete (GB) | Memoria mínima consumida total (GB) | Descripción |
---|---|---|---|---|
1 | Globally | 1 | 1 | 1 Notebook utiliza 1 proceso del intérprete (las variables se comparten entre Notebooks) |
2 | Globally | 1 | 1 | 2 Notebooks utilizan 1 proceso del intérprete (las variables se comparten entre Notebooks) |
3 | Globally | 1 | 1 | 3 Notebooks utilizan 1 proceso del intérprete (las variables se comparten entre Notebooks) |
1 | Per Note | 1 | 1 | 1 Notebook utiliza 1 proceso del intérprete (las variables NO se comparten entre Notebooks) |
2 | Per Note | 1 | 2 | 2 Notebooks utilizan 2 procesos del intérprete (las variables NO se comparten entre Notebooks) |
3 | Per Note | 1 | 3 | 3 Notebooks utilizan 3 procesos del intérprete (las variables NO se comparten entre Notebooks) |
Cada proceso de intérprete se levanta con la primera ejecución de un párrafo de ese intérprete, pero el proceso no se detiene al ejecutar el último párrafo. Esto permite que los datos estén disponibles siempre que se abra el Notebook.
Esta situación puede provocar un gran consumo de memoria cuando se ejecuta un Notebook que no queremos que mantenga los datos en memoria.
La manera correcta de terminar ese proceso de intérprete (siempre que la configuración sea Per Note) es haciendo un Restart del intérprete. Si se realiza un Restart con una configuración Globally se detendrá el intérprete en todos los Notebooks, interrumpiendo su ejecución o disponibilidad.
De esta forma, una vez que se ha terminado con la ejecución de un Notebook y no se quiere mantener su ejecución, se puede terminar el proceso del intérprete y liberar su memoria.
A continuación se muestra la opción de Restart de intérpretes desde un Notebook.