Aprende qué es Apache Livy

Última actualización: 23/04/2022

Esta entrada es una introducción a Apache Livy, el servicio que ofrece una interfaz REST sobre Apache Spark. Entenderás qué es, sus ventajas y cómo ponerlo en marcha fácilmente.

Apache Livy

¿Qué es Apache Livy?

Apache Livy es un servicio que permite interactuar con un clúster de Apache Spark a través de una interfaz REST. De este modo, es posible solicitar la ejecución de trabajos o de código Spark, ya sea mediante jars compilados o fragmentos de código. Además también permite obtener los resultados de forma síncrona o asíncrona.

Livy simplifica la interacción entre Spark y los servidores de aplicaciones. Al facilitar la comunicación interactiva, es posible usar Spark desde aplicaciones web o móvil. Los contextos de Spark se ejecutan en el propio clúster gestionado por Yarn, de forma que no se pierde la tolerancia a fallos que este componente proporciona al sistema. También es posible gestionar de esta forma varios contextos de forma paralela.

Es un proyecto open source de la incubadora de la Apache Software Foundation originalmente desarrollado por Cloudera y escrito en el lenguaje de programación Scala. Puedes consultar el repositorio de código en Github del proyecto.

Ventajas de Apache Livy

La ventaja principal de Apache Livy es la capacidad de enviar trabajos desde cualquier lugar, y no solamente desde una terminal con el entorno de Apache Spark. Esto puede ser una aplicación web o móvil de forma programática. Livy permite a varios usuarios interactuar con su clúster Spark de forma concurrente, asegurando la comunicación con el clúster y autenticando a los usuarios de forma segura.

Apache Livy es compatible con Scala, Java y Python. Con Scala y Python puede usarse de forma interactiva. Además, usando Apache Livy es posible tener contextos de Spark que pueden ser utilizados para múltiples trabajos o clientes y compartir objetos como Dataframes en caché entre ellos.

Arquitectura Apache Livy
Arquitectura y Componentes de Apache Livy

Usando la API programática de Apache Livy, es posible ejecutar código Spark en aplicaciones sin la necesidad de mantener un Spark Context local. Como vemos, Apache Livy nos proporciona dos modos de ejecución: modo interactivo y modo batch. El contexto interactivo funciona de forma similar a Spark-shell o PySpark, mientras que el batch funciona como la herramienta Spark-submit.

Por último, para usar Apache Livy no es necesario cambiar el código de las aplicaciones. Solamente hay que desplegar el fichero de configuración en el clúster de Spark.

Instalación y Configuración de Apache Livy

Para ejecutar el servidor de Livy, es necesario disponer de una instalación de Apache Spark en el sistema. Livy necesita al menos Spark v1.6. Tras descargar y descomprimir la distribución de Apache Livy, puedes ejecutar el servidor con el siguiente comando:

./bin/livy-server start

La configuración que usará Livy es la que el sistema tenga definida bajo la variable de directorio $SPARK_HOME. Debes asegurarte de que Spark esté configurado para ejecutar aplicaciones en el modo clúster con Yarn para gestionar los recursos de forma correcta.

La configuración de Livy se encuentra en el directorio conf. El fichero livy.conf contiene la configuración por defecto del servidor, que podrás editar para ajustarla a tu instalación.

Para conectarte al servidor a través de la web, puedes hacerlo en el puerto por defecto 8998. Sobre este puerto también ejecutará la API REST. Puedes consultar aquí todos los endpoints.

/sessions – Para conocer (GET) o crear (POST) las sesiones interactivas de Spark

/batches – Para conocer (GET) o crear (POST) las sesiones no interactivas (Batch) de Spark

Si queremos usar la API de Livy de forma programática en Java, Scala o Python, podemos importar la dependencia de Livy en nuestro proyecto con Maven:

<dependency>
  <groupId>org.apache.livy</groupId>
  <artifactId>livy-client-http</artifactId>
  <version>0.7.0-incubating</version>
</dependency>

Siguientes pasos y Formación

Si quieres aprender Apache Spark a fondo y convertirte en experto, no dudes en invertir en tu formación a largo plazo. He seleccionado los que son en mi opinión, los tres mejores cursos de Spark que puedes encontrar online:

curso analisis scala spark

Análisis Big Data Con Scala y Spark

Este curso forma parte de la especialización en Coursera de programación funcional con Scala. Aprenderás a cargar y procesar datos con Apache Spark de forma distribuida con casi 30 horas de contenido. Entenderás cómo funciona internamente el framework y la manera de optimizar las cargas de trabajo con Scala.

curso data engineering machine learning spark coursera

Data Engineering y Machine Learning con Apache Spark

El curso ofrecido por IBM en Coursera te permite aprender habilidades de ingeniería de datos y a implementar soluciones con machine learning en Spark. Es parte de la especialización de el certificado de ingeniero de datos profesional de IBM y muy recomendable.

Curso aprender Apache Spark con Python

Aprende Spark con Python

En inglés tienes dos cursos muy populares de Apache Spark en dos lenguajes de programación en Udemy, tanto en Scala como en Python. El instructor del curso es Frank Kane, que tiene un estilo muy práctico y fácil de seguir. Aprenderás sobre computación distribuida, cuándo usar Spark y proyectos de ingeniería de datos:

Además, te dejo mis libros recomendados:

Deja una respuesta