...
Table of Contents |
---|
Introducción
El motor de Notebooks de la plataforma se basa en Apache Zeppelin. En Zeppelin el soporte de los diferentes lenguajes se da a través de Interpretes.
Estructura de Zeppelin
Para entender el funcionamiento de Zeppelin, hay que tener en cuenta su estructura (Explicación estructura de Zeppelin).
Zeppelin tiene tres componentes principales:
Notebooks.
Managers (máquina virtual de java que gestiona las ejecuciones y donde se encuentra el contexto).
Intérpretes de cada lenguage
Cuando se ejecuta un párrafo, el flujo que se ejecuta es:
El notebook envía el código al manager.
Este manager gestiona el contexto y envía el código al intérprete correspondiente para que ejecute el código.
El intérprete ejecuta el código y devuelve el resultado al manager.
El manager devuelve el resultado al notebook.
Los managers y los intérpretes pueden configurarse (Interpreter Binding Mode) en función del uso que se le da (un único Data Scientists, varios, ...) y de la infraestructura de la que dispongamos.
A continuación se explica el significado de estas configuraciones.
Configuración de los intérpretes
La configuración de instancia del intérprete hace referencia a cómo se ejecutan los intérpretes dentro de la instalación.
...
Cada intérprete corresponde a un proceso en ejecución en el sistema, que puede ser creado de forma global (proceso único), por usuario (un proceso por cada usuario) o por note (un proceso por notebook).
A continuación se muestran las características de cada opción.
Características por instancia de intérprete | Globally (De forma global) | Per Note (Por Notebook) | Per User (Por usuario) |
---|---|---|---|
Ejecución en paralelo | No permitida: Todos los notebooks llaman al mismo proceso del intérprete para ejecutar el código. Es decir, existe una cola de ejecución común para todos los párrafos de todos los notebooks. | Permitida: Cada notebook cuenta con un proceso individual que ejecuta el código. | Permitida (por usuario): Cada usuario tiene un proceso individual que ejecuta el código de todos los notebooks de ese usuario, por lo que dos notebook del mismo usuario no podrán ejecutarse en paralelo pero dos notebooks de usuarios diferentes sí. |
Variables compartidas | Todas las variables serán accesibles desde todos los notebooks porque todas las ejecuta el mismo proceso. Esto supone una seguridad nula entre notebooks. | Las variables de cada notebook sólo serán visibles desde ese notebook. Esto supone una seguridad máxima entre notebooks. | Las variables serán visibles desde todos los notebooks de cada usuario. Esto supone una seguridad media entre notebooks. Es decir, para una variable i = 6, todos los notebooks del usuario1 podrán cambiar el valor de la variable con i = 7, por ejemplo. |
Configuración de los managers
La configuración de instancia del mánager hace referencia a cómo se ejecutan los managers dentro de la instalación.
...
Para las configuraciones Per Note y Per User existen dos posibilidades de instancia del manager:
Isolated per note (aislado por nota).
Scoped per note (alcance por nota).
Estas configuraciones hacen referencia a cómo el manager o managers gestionarán el contexto y enviarán el codigo a los intérpretes para su ejecución.
A continuación se muestran las características de cada opción.
Características por instancia de manager | Isolated per note | Scoped per note |
---|---|---|
Contexto compartido | Contexto no compartido. Cada notebook tiene un manager que gestiona un sólo contexto y envía el código a los intérpretes. Las variables guardadas en el contexto sólo son accesibles desde dentro del mismo notebook. Si falla el manager, sólo afecta a los procesos de ese notebook. | Contexto compartido entre intérpretes. Los notebooks tienen un manager común que gestiona un contexto y envía el código a los intérpretes. Si falla este manager, afecta a todos los notebooks. |
Esquema visual
De forma visual, la estructura corresponde a:
Globally shared | Per Note/ User Scoped | Per Note/ User Isolated |
---|