Introducción a la ciencia de datos en Kubernetes: Jupyter y Zeppelin

No es ningún secreto que la comunidad de análisis de datos se ha estado moviendo hacia el uso de más herramientas de código abierto y basadas en la nube. Los cuadernos Apache, Zeppelin y Jupyter Notebook son dos de las herramientas más populares utilizadas por los científicos de datos en la actualidad. En esta publicación de blog, le mostraremos cómo integrar fácilmente Ilum con estos cuadernos para que pueda ejecutar sus cargas de trabajo de análisis de datos en k8s.
Kubernetes para la ciencia de datos
Con el auge de los macrodatos y las aplicaciones con uso intensivo de datos, la gestión y la implementación de cargas de trabajo de ciencia de datos se ha vuelto cada vez más compleja. Aquí es donde entra en juego Kubernetes, ya que proporciona una plataforma escalable y flexible para ejecutar plataformas informáticas interactivas como Jupyter y Zeppelin.
La comunidad de ciencia de datos ha estado usando Jupyter Notebooks durante mucho tiempo. Pero, ¿qué pasa con la ejecución de la ciencia de datos en Kubernetes? ¿Podemos usar cuadernos Jupyter en k8s? ¡La respuesta es sí! En esta entrada de blog se muestra cómo ejecutar la ciencia de datos en Kubernetes con Jupyter Notebooks y Zeppelin.
Utilizaremos sesiones interactivas de Apache Spark e Ilum para impulsar la computación. La función de sesiones interactivas le permite enviar código Spark y ver los resultados en tiempo real. Esta es una excelente manera de explorar datos y probar diferentes algoritmos. Con Apache Spark, puede procesar fácilmente grandes cantidades de datos, y la función de sesiones interactivas de Ilum facilita la prueba de diferentes fragmentos de código y ver los resultados de inmediato.
Ilum, Apache Livy y Sparkmagic
Ilum se creó para facilitar a los científicos e ingenieros de datos la ejecución de Spark en Kubernetes. Creemos que al simplificar ese proceso, podemos facilitar que los usuarios comiencen con estas tecnologías y aumentar la adopción de k8s dentro de la comunidad de ciencia de datos.
Ilum implementa la interfaz de descanso de Livy, por lo que se puede utilizar como un sustituto de Apache Livy en cualquier entorno. Mostraremos cómo integrar Ilum con Sparkmagic.
Tanto Ilum como Livy pueden lanzar contextos de Spark de larga duración que se pueden usar para varios trabajos de Spark, por parte de varios clientes. Sin embargo, hay algunas diferencias clave entre los dos.
Ilum es un software bien mantenido y desarrollado activamente, actualizado con nuevas bibliotecas y funciones. Livy, por otro lado, tiene una comunidad robusta que ha creado integraciones con muchas aplicaciones. Desafortunadamente, el desarrollo de Livy se ha estancado y, por eso, Livy no está listo para la transformación de Cloud Native.
Ilum puede escalar fácilmente hacia arriba y hacia abajo y tiene una alta disponibilidad. Una gran ventaja que tiene Ilum sobre Livy es que funciona en Kubernetes. También permite la integración con HILO .
Ambas herramientas proporcionan una interfaz web fácil de usar para monitorear clústeres de Spark y aplicaciones de Spark, pero la de Livy parece estar desactualizada y ser muy limitada.
Entonces, ¿por qué no aprovechar al máximo a Ilum y Livy?
Ilum-livy-proxy
Ilum tiene un componente incrustado que implementa la API de Livy. Permite a los usuarios aprovechar la interfaz REST de Livy y el motor Ilum simultáneamente.
Estamos trabajando arduamente para sumar Pitón apoyo a Ilum, además de la Scala apoyo. Esté atento a nuestro Hoja de ruta para estar al día de nuestros progresos.
Zeppelin y Jupyter
Zeppelin y Jupyter son cuadernos basados en la web que permiten el análisis interactivo de datos y la creación colaborativa de documentos con diferentes idiomas.
Los cuadernos de Jupyter Notebook son especialmente populares entre los usuarios de Python. El proyecto ha evolucionado desde el entorno IPython, pero ahora cuenta con soporte para muchos idiomas.

La lista de kernels de Jupyter es enorme .
Zeppelin está bien integrado con herramientas de big data. En Zeppelin, es posible combinar diferentes intérpretes en un cuaderno y luego ejecutarlos en diferentes párrafos.

Puede ver una lista de intérpretes compatibles con Zeppelin aquí
Integración de notebooks con Ilum
Configuración de Ilum
Empecemos por lanzar el clúster de Apache Spark en Kubernetes. Con Ilum, es bastante fácil hacer esto. Usaremos minikube para el propósito de este artículo. Lo primero que tenemos que hacer es ejecutar un clúster de Kubernetes:
minikube start --cpus 4 --memory 12288 --addons metrics-server
Una vez que minikube esté funcionando, podemos pasar a la instalación de Ilum. Primero, agreguemos un repositorio de gráficos de Helm:
Helm Repo Añadir Ilum https://charts.ilum.cloud
Ilum incluye tanto Zeppelin como Jupyter, pero deben habilitarse manualmente en la configuración de instalación junto con ilum-livy-proxy.
helm install ilum ilum/ilum --set ilum-zeppelin.enabled=true --set ilum-jupyter.enabled=true --set ilum-livy-proxy.enabled=true
La inicialización de todos los pods puede tardar algún tiempo. Puede comprobar el estado con el comando:
kubectl get pods

Jupyter
Empecemos con:
kubectl port-forward svc/ilum-jupyter 8888:8888
Ilum usa Sparkmagic para trabajar con Apache Spark en cuadernos de Jupyter Notebook. De forma predeterminada, Jupyter (con la biblioteca de Sparkmagic instalada) se ejecutará en el puerto 8888. Para acceder al servidor, abra su navegador y vaya a localhost:8888. Deberá iniciar sesión con una contraseña de los registros, o puede copiar y pegar la URL completa con "localhost" sustituido por el dominio.
kubectl logs ilum-jupyter-85f6d9bfb8-t642d

Una vez abierto el Jupyter, tenemos que lanzar el cuaderno Python3:

Ahora ejecutemos los siguientes comandos para cargar Spark Magic y configurar un punto de conexión.
1. En primer lugar, tendremos que cargar la extensión spark magic. Para ello, ejecute el siguiente comando:
%load_ext sparkmagic.magics
2. A continuación, tendremos que configurar un punto final. Un punto de conexión es simplemente una dirección URL que apunta a un clúster de Spark específico. Para ello, ejecute el siguiente comando:
%manage_spark

Jupyter agrupado está listo para funcionar de forma inmediata y tiene una dirección de punto de conexión predefinida, que apunta a livy-proxy. Lo que tienes que hacer es elegir este punto final de la lista desplegable y hacer clic en el botón crear sesión. Tan simple como eso. Ahora Jupyter se conectará con ilum-core a través de ilum-livy-proxy para crear una sesión de Spark. Pueden pasar varios minutos hasta que el contenedor de chispas esté en funcionamiento. Una vez que esté listo, recibirá información de que hay una sesión de Spark disponible.

Ahora puede usar su sesión de Ilum para ejecutar código de Spark en él. El nombre que asignó a la sesión se utilizará en el archivo %%chispa mágica para ejecutar el código.

Apache Zeppelin
Empecemos con:
kubectl port-forward svc/ilum-zeppelin 8080:8080
Al igual que Jupyter, también incluimos el portátil Zeppelin con Ilum. Tenga en cuenta que el tiempo para la creación del contenedor podría extenderse debido al mayor tamaño de la imagen. Una vez creado y ejecutado el contenedor, podrá acceder al portátil Zeppelin en su navegador en http://localhost:8080.
- Para ejecutar el código, necesitamos crear una nota:

2. Como la comunicación con Ilum se maneja a través de livy-proxy, debemos elegir livy como intérprete predeterminado.

3. Ahora abramos la nota y pongamos algo de código en el párrafo:

Al igual que Jupyter, Zeppelin también tiene una configuración predefinida que es necesaria para Ilum. Puede personalizar la configuración fácilmente. Simplemente abra el menú contextual en la esquina superior derecha y haga clic en el botón del intérprete.

Hay una larga lista de intérpretes y sus propiedades que se pueden personalizar.

Zeppelin proporciona 3 modos diferentes para ejecutar el proceso de intérprete: compartido, con ámbito y aislado. Puede obtener más información sobre el modo de enlace del intérprete aquí .
Jupyter y Zeppelin son dos de las herramientas más populares para la ciencia de datos, y ahora están disponibles en k8s. Esto significa que los científicos de datos ahora pueden usar Kubernetes para administrar e implementar sus aplicaciones de ciencia de datos.
Ilum ofrece algunas ventajas para los científicos de datos que utilizan Jupyter y Zeppelin. En primer lugar, Ilum puede proporcionar un entorno gestionado para Jupyter y Zeppelin. Esto significa que los científicos de datos no tienen que preocuparse por administrar su propio clúster de Kubernetes. En segundo lugar, Ilum ofrece una forma sencilla de iniciarse en la ciencia de datos en Kubernetes. Con Ilum, los científicos de datos pueden simplemente lanzar una instancia de Jupyter o Zeppelin y comenzar a explorar sus datos.
Entonces, si eres un científico de datos que quiere comenzar con la ciencia de datos en Kubernetes, echa un vistazo a Ilum. Con Ilum, puede comenzar de forma rápida y sencilla, sin tener que preocuparse por administrar su propio clúster de Kubernetes.
En general, la ciencia de datos en Kubernetes puede ser una excelente manera de mejorar el flujo de trabajo y permitir una mayor colaboración. Sin embargo, es importante comenzar con una comprensión básica del sistema y cómo funciona antes de profundizar demasiado. Dicho esto, Jupyter y Zeppelin son dos excelentes herramientas para ayudar a comenzar con la ciencia de datos en Kubernetes.

¿Es realmente necesario Kubernetes para la ciencia de datos?
Kubernetes es un sistema de código abierto para automatizar la implementación, el escalado y la administración de aplicaciones en contenedores. Agrupa los contenedores que componen una aplicación en unidades lógicas para facilitar la administración y la detección.
La ciencia de datos es un proceso de extracción de conocimientos o ideas de los datos en diversas formas, ya sea estructuradas o no estructuradas, que se pueden utilizar para tomar decisiones o predicciones.
Entonces, ¿es Kubernetes realmente necesario para la ciencia de datos? La respuesta es sí y no. Si bien k8s puede ayudar a automatizar la implementación y administración de aplicaciones de ciencia de datos, no es estrictamente necesario. Los científicos de datos aún pueden usar otros métodos para implementar y administrar sus aplicaciones. Sin embargo, Kubernetes puede facilitarles la vida al proporcionar una plataforma unificada para administrar múltiples aplicaciones de ciencia de datos.