Apache Kylin: cómo analizar Terabytes en menos de un segundo


Apache Kylin es un Data Warehouse distribuido para Big Data. Proporciona procesamiento analítico online (OLAP), usando Hadoop y Spark como motores para el precálculo de cubos multidimensionales y Hbase para su almacenamiento. Además, gracias a sus beneficios en términos de baja latencia, volumen de datos y procesamiento, se ha convertido en una de las herramientas que mejor ayuda a sacar el máximo partido a los datos. A continuación, os explicamos cómo lo hace.

Originalmente desarrollado por ebay, Apache Kylin forma parte desde 2014 de “Apache Software Foundation”, llegando en diciembre de 2015 a “Top Level Project”. Kyligence Inc es una empresa china que ofrece soporte comercial a Apache Kylin.

¿Qué es un cubo OLAP y qué nos aporta Apache Kylin?

Un cubo OLAP es un array de datos multidimensionales. El dato puede tener muchas dimensiones, siendo el tiempo una de las más usadas. Cada posición del array contiene un cálculo denominado medida, obtenido agrupando n dimensiones que contenga el cubo.

Las tecnologías de Big Data, y en especial Hadoop, fueron un punto de inflexión en el procesamiento y almacenamiento distribuido. Hasta entonces el elemento principal de escalado era el vertical frente al escalado horizontal que proporciona una capacidad de almacenamiento y cómputo muy superior. Los Data Warehouse “clásicos” usan en su gran mayoría un sistema vertical en donde los precálculos de las agregaciones contenidas en los cubos suelen introducir una latencia considerable. Apache Kylin, haciendo uso de tecnologías de Big Data, intenta resolver este problema de escalado y cómputo.

Apache Kylin no es la única tecnología de Big Data para implementar un Data Warehouse. Entre las alternativas se encuentran Druid, AtScale y Dremio. Obviamente todas ellas tienen características distintas, diferentes arquitecturas, y podrían ser aplicables a distintos casos de uso.

Arquitectura de Apache Kylin

  • Kylin es capaz de ingestar datos de múltiples fuentes tales como Hadoop, Hive, Kafka, etc.
  • La construcción del cubo multidimensional se realiza usando frameworks de procesamiento distribuido tales como MapReduce y Spark.
  • El cubo, una vez calculado se almacena en Hbase, en donde la key es la combinación de dimensiones agregadas, y el valor es la medida, es decir, el valor que queremos calcular. Gracias a las características de Hbase, el acceso a estos datos suele ser en milisegundos.
  • El acceso a los datos es a través de un API Rest, o mediante JDBC/ODBC usando lenguaje SQL.

 

Tres tipos de cubos

  1. OLAP
  • Es el más básico, que corresponde con lo descrito en la arquitectura, y en donde la latencia vendrá dada principalmente por el tiempo de precálculo del cubo usando MapReduce o Spark, y el acceso de los datos fuente.
  1. NRT OLAP
  • Acceder a los datos suele implicar una cierta latencia. Si introducimos en la ecuación Apache Kafka como fuente de datos, conseguimos minimizar dicha latencia, aunque aún tenemos la dada por el precálculo del cubo.
  1. Real-Time OLAP
  • Esta es una característica que nos da la posibilidad de minimizar la latencia producida por el precálculo de los cubos, dando la opción a un sistema real time puro.
  • Las consultas hacia los cubos son divididas en dos partes, analizando la fecha de las particiones:
    • Las consultas pertenecientes al último periodo de tiempo serán enviadas a los nodos “real time” encargados de servir el resultado sin necesidad de precálculos.
    • Las consultas de datos históricos son enviadas a Hbase, en donde todos los precálculos están almacenados.
    • “Query Server” que es el elemento que procesa las consultas, hace la unión de los resultados proporcionados por los nodos “real time” y Hbase.

 

 

Apache Kylin en Cloud

Apache Kylin tiene soporte en Cloud a través del producto ofrecido por la empresa Kyligence. Es una solución basada en Apache Kylin pero con pequeñas modificaciones que enriquecen su funcionalidad.

 

Conclusiones

Apache Kylin nos ofrece beneficios en términos de baja latencia, volumen de datos y procesamiento que pocas herramientas pueden proporcionar, pudiendo sacar el máximo partido a nuestros datos. Entre los casos de uso más comunes podemos enumerar los siguientes:

  • Adhoc reporting. El precálculo y disponibilidad de los datos agregados en real time, puede dar la posibilidad de generación de reportes customizados por el usuario con un tiempo de acceso a los datos de milisegundos
  • Data Analytics. Un caso de uso típico relacionado con industria e IoT, en donde podemos analizar datos procedentes de cientos, miles o incluso millones de dispositivos, todo ello en real time.
  • Integración con otras herramientas BI. Apache Kylin es fácilmente integrable con herramientas de BI tales como Tableau, PowerBI, QlikView, etc. De manera que podemos sacarle el máximo partido a los datos calculados en Kylin.

Para más detalle sobre Apache Kylin, ponte en contacto con nosotros o echa un vistazo a un webinar que hicimos en GFT recientemente, donde, entre otras cosas, analizamos el funcionamiento interno de este Data Warehouse, y cómo nos puede ayudar a realizar consultas sub-second de terabytes de información, y a construir un cubo OLAP tanto en Batch como en Streaming.