Introducción a Azure HDInsight

Última actualización: 28/11/2020

En este artículo aprenderás en qué consiste el servicio de Azure para Big Data HDInsight, que nos va a permitir ejecutar nuestras cargas de trabajo Big Data en la nube con los servicios que estamos acostumbrados.

Que es Azure HDInsight

¿Qué es Azure HDInsight?

Azure HDInsight o HDI es la solución gestionada de analítica en Microsoft Azure. Está construida sobre plataformas open source como Hadoop, Spark, Hive o Kafka. La versión actual es HDInsight 4.0.

En HDI se pueden desplegar 5 tipos de clústeres:

  • Apache Hadoop: Este clúster incluye HDFS, MapReduce, Yarn, Hive, Pig, Sqoop y Oozie.
  • Apache Spark: Incluye los componentes del clúster de Hadoop y Spark.
  • Interactive Query: Incluye Hive LLAP, para tener caché en memoria, acelerar y hacer interactivas las consultas de Hive.
  • Apache HBase: Incluye HBase, para usar cuando se necesite acceso aleatorio y en tiempo real a los datos.
  • Apache Kafka: Incluye Kafka y Zookeeper.

Aunque no es posible crear clústeres que combinen estos tipos y servicios, sí que es posible crear los clústeres del tipo que necesitemos en la misma red virtual compartida de Azure.

Los clústeres de HDInsight no tienen opción de parar ni reanudar su ejecución, por lo que deberemos destruirlos completamente cuando ya no necesitemos el servicio.

Los trabajos de Spark se pueden ejecutar fácilmente con la API de Apache Livy, que viene ya integrado en el clúster. También se pueden planificar con Oozie.

El Enterprise Security Package (ESP) es una funcionalidad adicional que añade la capacidad a los clústeres de HDI de integrarse con Apache Ranger y Azure Active Directory (AAD).

El coste de HDI es simplemente el de los recursos que se despliegan, como el tipo y el número de las máquinas virtuales, las redes, etc. No tiene un coste por servicios. El único coste adicional es en el caso de que activemos el ESP, que es proporcional a los recursos de Azure usados.

Almacenamiento en Azure

HDInsight es totalmente compatible con las opciones de almacenamiento ilimitados de Azure como ADLS (Azure Data Lake Storage) y Azure Storage o Blob Storage. La opción con mejor performance es ADLS Gen2.

Debemos tener en cuenta que HDFS no se despliega típicamente en el clúster de HDI. Lo que se hace, es proporcionar una interfaz compatible con HDFS que usan todos los componentes de Hadoop. Esta capa de compatibilidad es la que permite que los trabajos de Hadoop y MapReduce ejecuten en el clúster como si HDFS estuviera presente, pero por debajo, el almacenamiento es una cuenta de Azure Storage o ADLS.

Azure HDInsight y capa de compatibilidad HDFS
Azure HDInsight y capa de compatibilidad HDFS

Clústeres Volátiles

Los clústeres de HDI tardan en desplegar de 10 a 15 minutos. Este despliegue se puede realizar con el asistente de Azure o programáticamente a través de Azure CLI. Aquí dejo una referencia con los comandos para gestionar los recursos de HDI.

Una opción interesante consiste en usar estos recursos como clústeres volátiles, que se despliegan para ejecutar cargas de trabajo particulares y se destruyen cuando terminan sus trabajos, quedando los datos en el almacenamiento de Azure (ADLS).

Por defecto, HDI despliega los servicios de Ambari, Hive y Oozie sobre una base de datos Azure SQL gestionada por HDI. Es posible indicar una base de datos externa o no manejada por HDI para poder usar también con otro clúster.

Esta funcionalidad, nos permite desplegar un nuevo clúster sobre una base de datos existente y de esta forma tener un control absoluto de la misma y hacerla persistente.

Autoescalado de Recursos

HDI también permite hacer que los recursos de nuestros clústeres aumenten y disminuyan cuando la carga de trabajo aumente o disminuya respectivamente. Este proceso es automático, y se puede configurar de dos maneras:

  1. En función de la carga: El clúster aumentará el número de nodos workers basándose en la actividad del clúster.
  2. Autoescalado planificado: Permite planificar unos tiempos en los que se aumentará o reducirá el número de nodos del clúster. Podemos configurar franjas de horas o de días según nos convenga.

HDI monitorizará métricas como la CPU libre, la memoria en uso, la memoria libre o el número de aplicaciones por nodo para determinar cuándo añadir más nodos o reducir su número.

Esta funcionalidad es muy útil para absorber los picos de carga que se puedan producir. Sin embargo, debemos estudiar bien nuestros procesos, ya que es posible que HDI no sea capaz de desalojar bien determinados nodos (por ejemplo executors de spark que se quedan con una tarea) y por tanto infrautilizar nuestra infraestructura, con el sobrecoste que esto supone.

En el caso de Kafka, la funcionalidad de autoescalado no se encuentra disponible para evitar escenarios de pérdida de datos.

Notebooks en Azure HDInsight

Los clusteres de HDI con Spark, proporcionan Jupyter y Zeppelin notebooks, que podemos usar para probar y desarrollar nuestras aplicaciones. Los notebooks pueden ser de tipo PySpark, PySpark3 o Spark con Scala.

Los notebooks de Jupyter se podrán almacenar en la cuenta de almacenamiento de Azure que tengamos configurada, por lo que los podremos reutilizar entre clústeres.

También, podemos configurar Livy para usar Jupyter desde nuestra máquina local.

Databricks vs HDInsight

Databricks logo

Como vimos en el artículo de introducción a Databricks, es una solución con características similares a Azure HDInsight para ejecutar nuestros procesos analíticos en la nube.

Ambas soluciones están disponibles en Azure e integrados con el almacenamiento ADLS Gen2. HDI, al estar basado en el stack de tecnologías open source, puede resultar en una alternativa de migración más directa para los equipos que quieran trasladar sus trabajos a la nube pública.

En cuanto al coste, debemos tener en cuenta que Databricks tiene un coste por servicio además del coste de la infraestructura. Sin embargo, facilita mucho los despliegues de clústeres para cargas de trabajo puntuales o periódicas, funcionalidad que no está presente en HDI.

También, para elegir la alternativa adecuada, debemos evaluar las tecnologías que vamos a utilizar. HDI nos da un abanico muy amplio de servicios que podremos usar en el ecosistema de hadoop. Databricks en una plataforma centrada en Apache Spark, por lo que deberemos considerar también los servicios de Azure y tecnologías complementarias que necesitaremos para tener una solución analítica completa, por ejemplo con Apache Kafka o Delta Lake.

Siguientes Pasos

Aquí tienes algunos cursos para aprender más sobre Azure HDInsight con los que ampliar y consolidar el conocimiento:

A continuación, te dejo 3 publicaciones para que puedas seguir aprendiendo sobre Big Data en Azure y HDInsight:


¡Echa un ojo a mi lista de reproducción de Big Data en Youtube!

Si te ayuda el contenido del blog, por favor considera unirte a la lista de correo para reconocer el trabajo!

Deja una respuesta