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.
Contenidos
¿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.
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
Además, te dejo mis libros recomendados:
- Spark: The Definitive Guide: Big data processing made simple
- Advanced Analytics with Spark
- High Performance Spark
- Learning Spark: Lightning-Fast Big Data Analysis
- 99 Apache Spark Interview Questions for Professionals (Kindle)
¿Qué organizaciones pueden beneficiarse de Apache Livy?
Apache Livy puede ser beneficioso para cualquier organización que desee facilitar la ejecución de código en lenguajes como Python, R y Scala en un entorno distribuido, como Apache Spark o Apache Hadoop. Esto puede ser útil para organizaciones que desean realizar análisis de datos y cálculos complejos de manera rápida y eficiente en la nube. Apache Livy puede ser especialmente útil para organizaciones de ciencia de datos, análisis de datos o inteligencia empresarial.
¿Cuáles son las opciones de licenciamiento de Apache Livy?
Apache Livy está disponible bajo la Licencia Apache 2.0, que es una licencia de código abierto y gratuita. Esto significa que Apache Livy es gratuito para descargar, usar y modificar para cualquier propósito, siempre y cuando se cumplan ciertas condiciones, como la publicación de cambios y mejoras realizadas al código fuente de Apache Livy. La Licencia Apache 2.0 permite la distribución comercial y privada de Apache Livy, siempre y cuando se cumplan las condiciones de la licencia. La Licencia Apache 2.0 también incluye algunas limitaciones y exclusiones de responsabilidad, que deben ser consideradas y respetadas por los usuarios de Apache Livy.