HDInsight: Big Data en el ecosistema Microsoft

 

Post invitado por cortesía de Pablo Álvarez Doval ( @PabloDovalhttps://geeks.ms/blogs/palvarez/) SQL/BI Team Lead en PlainConcepts. Gracias por tu tiempo!!

 

Sin duda uno de los términos más de moda en los diferentes foros y publicaciones de IT Pros y desarrolladores en este año que termina ha sido Big Data. No se trata, ni mucho menos, de un término nuevo: ya en 2004 Google publicó abiertamente los dos Whitepapers que supusieron el origen de lo que hoy es Hadoop, y ciertamente la noción de Big Data para algunas organizaciones se puede trazar incluso antes en el tiempo. Lo que sí es una novedad es el cambio en la percepción de estas tecnologías por parte de las empresas “del mundo real” durante estos últimos meses; y es que, debido al aumento masivo de los datos disponibles y a la reducción de costes de infraestructura (en gran parte debido a la adopción de soluciones de cloud computing) las soluciones de Big Data han dejado de ser propiedad exclusiva de cierto reducidísimo conjunto de empresas, para convertirse en soluciones de arquitectura mucho más accesibles.

Este pequeño artículo describirá someramente qué es Big Data, qué es Hadoop y qué escenarios pueden facilitar en nuestros proyectos, todo ello visto a través del prisma de las tecnologías Microsoft. Pero, más allá de una mera descripción, el objetivo final es que todos experimentemos con estas tecnologías, nos pongamos manos a la obra y creemos algo: ejemplos, soluciones concretas, cualquier cosa que nos ayude a eliminar el misticismo y el hype que rodean al mundo de Big Data y empecemos a verlo como tecnologías para el “Mundo Real™”.

¿Qué es Big Data?

Antes de describir qué es Big Data, creo que es importante dejar claro lo que no es:

Big Data no hace necesariamente referencia a cantidades ingentes de datos:

Como referencia, la base de datos aislada más masiva en SQL Server alcanza los 100Tb de memoria. Eso supone bastante un volumen de datos bastante más elevado que muchas soluciones basadas en clúster Hadoop, y sin embargo no clasifica como una solución de Big Data: es una simple base de datos relacional.

Big Data no es un Data Warehouse gigantesco:

Big Data no es el nuevo Data Warehouse, ni un sustituto a los appliances MPP tradicionales.

Big Data no es una tecnología:

Big Data no es una tecnología específica. Big Data no es Hadoop, ni Hana, ni Dryad, ni Impala, etc.

Entonces, ¿Qué es Big Data? Una de las frases de libro es “Una solución de Big Data es necesaria cuando el mero tamaño de los datos se convierte en parte del problema” . Como se puede observar, esa frase dista bastante de ser una definición; y de hecho solo hace hincapié en el aspecto del volumen de datos, algo que, tal como se ha comentado con anterioridad, no es el único factor determinante en un entorno de Big Data.

Vamos pues a las famosas tres uves de Big Data:

1. Volumen:

Ahí va un ejemplo que particularmente me encanta: un motor a reacción de un avión comercial genera aproximadamente 10Tb cada 30 minutos de vuelo. De este modo, un Boing 747 con 4 motores podría generar unos 640Tb en un vuelo transatlántico de 8 horas. Repito, ¡un único vuelo! No está nada mal, ¿verdad? :)

2. Velocidad:

Algunos datos tienen una latencia del orden de milisegundos (streams financieros, información de sensores) mientras que otros tienen latencia de horas (datos agregados de orígenes externos).

3. Variedad:

Integración de datos estructurados (bases de datos relacionales, hojas de Excel) con datos no estructurados o semi-estructurados, como pueden ser información de logs, información transaccional de diferentes sistemas, documentos de texto o imágenes y sonidos en formato binario. Todo ello forma parte de los datos usados en un entorno de Big Data.

Pensemos pues en el conjunto de repositorios que conforman los datos de los que es propietaria una empresa estándar: es posible que lo primero que se nos venga a la cabeza sean los sistemas transaccionales (ventas, producción, sensores), quizá un Data Warehouse corporativo. Si seguimos pensando llegaremos a las listas de Sharepoint (datos semi-estructurados) ¿y porque no el resto de los documentos? Son datos al fin y al cabo. Los logs de nuestros IIS y otras aplicaciones, incluso mails de ciertas cuentas específicas. Un elevado porcentaje de los datos de una organización son no estructurados, y generalmente no son gestionados por las mismas.

Los sistemas de bases de datos relacionales tradicionales no están diseñados para hacer frente a estas tres uves, y por esto han aparecido nuevas soluciones, como la plataforma Hadoop, para tratar de abordar estos nuevos retos.

En resumen, podemos decir que Big Data no es nada más que un término para hacer referencia a nuevas estrategias y soluciones que debemos de adoptar para hacer frente a la avalancha de datos de las que disponemos ahora y tratar de obtener de ellos un beneficio que, con las tecnologías existentes, era ciertamente inviable.

Humm… veo por donde vas, pero entonces ¿qué es Hadoop?

Hadoop es un framework para el desarrollo de aplicaciones distribuidas, desarrollado inicialmente por Doug Cutting en Yahoo, y siendo actualmente uno de los proyectos de primer nivel de Apache. Su objetivo es simplificarnos la vida a la hora de escribir aplicaciones distribuidas en clústers de múltiples servidores construidos en base a maquinas ‘normales’.

¿Qué queremos decir cuando hablamos de servidores ‘normales’? Pues básicamente que el enfoque será el opuesto a los servidores de los entornos MPP, donde se trabaja con hardware especializado, donde se trata de obtener un tiempo medio entre fallos extremadamente alto. En un clúster Hadoop trabajaremos con equipos normales, dando por sentado que van a producirse fallos de los mismos; será la propia plataforma la que se encargará de sobreponerse a la perdida de nodos de modo que los trabajos sigan ejecutándose sin mayores problemas.

Podemos dividir la plataforma de Hadoop en dos subconjuntos:

· Hadoop Core:

El núcleo de la plataforma lo conforman el sistema de almacenamiento distribuido (HDFS) y el framework de desarrollo de procesos distribuidos (Map/Reduce).

HDFS: Se trata del sistema de archivos distribuido, con replicación automática, optimizado para lecturas. Cada fichero en un clúster Hadoop se particiona en fragmentos, que son distribuidos entre todos los nodos. Cada uno de esos fragmentos se copia, por defecto, en tres nodos. Esto permite garantizar que si uno de los nodos fallara, al menos se encuentran otras dos copias disponibles de ese fragmento del fichero para continuar el trabajo.

 

clip_image001

Esto también permite distribuir los trabajos para que trabajen sobre distintos fragmentos del mismo fichero en paralelo, permitiendo aumentar la escalabilidad del sistema.

 

· Map/Reduce: El otro gran pilar de Hadoop es el sistema de procesado distribuido Map/Reduce. Se trata de un framework Java que se encarga de liberarnos de las tareas más tediosas de la programación de sistemas distribuidos (como son la gestión de errores y reintentos, coordinación de tareas, etc…), de modos que nosotros solo tenemos que preocuparnos de la implementación de la lógica de nuestros procesos. Esto lo realizamos mediante la implementación de dos fases: la fase Map, y la fase Reduce (¡seguro que no lo veías venir!).

Mediante estas fases podemos convertir cualquier entrada arbitraria (recibida como pares clave, valor) en una salida procesada y agregada de pares clave, valor. Esta infraestructura nos permite implementar, con el mismo patrón, algo tan simple como contar las palabras de un texto, como realizar un análisis de señal para el reconocimiento vocal de todas las llamadas recibidas en una entidad aseguradora para la posible detección de fraudes.

Este mecanismo de programación de Jobs, junto con el sistema de ficheros HDFS, nos permite conseguir una escalabilidad casi lineal a base de agregar nodos en un clúster Hadoop.

 

· Otros productos:

Se han ido implementando otra serie de productos que agregan funcionalidad al clúster Hadoop, como pueden ser ciertos lenguajes para simplificar la tarea de escritura de procesos Map/Reduce (Pig), implementación de Data Warehouses sobre Hadoop (Hive y HBase), o sistemas de alimentación continua de datos (Flume).

¿y qué pinta Microsoft en todo esto?

Por todos es bien conocida la amplitud de espectro de las múltiples plataformas de datos de Microsoft: desde sistemas locales para pocos usuarios hasta algunos de los sistemas OLTP con mayor carga transaccional, pasando por el almacenamiento en la nube, tanto relacional como no relacional. Por ello, no nos sorprenderá que en Microsoft hayan decidido no quedarse atrás en esta área. De hecho, hace ya años que los chicos de Redmond habían puesto el foco en un producto desarrollado por Microsoft Research llamado Dryad. Sin embargo, finalmente han decidido volcarse de lleno en una solución basada en Hadoop.

Para ello, se estableció una alianza con Hortonworks, empresa fundada por gran parte de los creadores de Hadoop, y decidieron realizar conjuntamente una implementación de Hadoop estándar sobre la plataforma Microsoft, que recientemente ha recibido su nombre oficial: HDInsight. Tratándose de una adaptación de la distribución Hortonworks Data Platform, la licencia no puede ser otra que Apache; lo que es más, Microsoft está contribuyendo activamente al proyecto con código bajo esa misma licencia a medida que van desarrollando la integración.

Hay dos versiones de la plataforma actualmente:

· HDInsight Server:

Esta es la versión on-premise de la plataforma, y os la podéis descargar e instalar a través de WebPI para crearos un clúster de un único nodo para pruebas y desarrollo.

· HDInsight Service:

 

La versión en Azure como servicio, actualmente en periodo de pruebas. Podéis solicitar una invitación en www.hadooponazure.com, con la que podréis crear gratuitamente un clúster de tres nodos sobre el que hacer vuestras pruebas con Hadoop.

Más allá de la plataforma propiamente dicha, Microsoft está realizando una serie de productos satélite muy interesantes, como el SDK de Hadoop para .NET, la consola JavaScript con la fluent API para Pig, el conector ODBC para Hive y el panel de Hive para Excel, integración con System Center, etc. El siguiente diagrama muestra como encajan las diferentes piezas de Hadoop y un ecosistema Microsoft tradicional, con su Active Directory, SCOM, etc…

clip_image003

Por supuesto, una vez tenemos nuestro clúster de Hadoop y nuestros procesos en orden, puede ser muy interesante integrarlo con sistemas de BI tradicionales; no debemos olvidar que Hadoop es, por naturaleza, un sistema batch. Es por eso que una gran cantidad de los entornos Hadoop suelen terminar alimentando algún sistema OLAP (siendo SSAS Multidimensional o Tabular unos compañeros excelentes para estas arquitecturas) e integrados con algún sistema CEP como StreamInsight.

Y ahora, ¿por dónde seguimos?

Espero que esta pequeña introducción haya servido para ayudar a encajar de algún modo las piezas principales que componen el puzle del ecosistema Hadoop. Está claro, no obstante, que no hay mejor sustituto que la práctica de cara a comprender y asimilar estos nuevos escenarios. Por ello, me vais a permitir que me tome la libertad de recomendaros un plan para descubrir HDInsight en un poco más de profundidad, y ayudaros a determinar si este conjunto de tecnologías tienen sentido en vuestros proyectos.

Este es el plan que yo seguiría:

1. Solicitar un clúster de prueba de HDInsight Service en Azure

2. Leer la descripción y el código de los ejemplos, probarlos, trastear con ellos…

3. Acceder a los datos de ejemplo en Hive mediante Excel usando el proveedor ODBC

4. Cargar esos datos de Hive en un SQL Server mediante paquetes SSIS para probar escenarios de integración

5. Descargar el SDK de Hadoop para .NET e implementar algún Map/Reduce propio, alguna consulta de LINQ en C# y controlar HDFS mediante WebHDFS

En seguida querréis trabajar con un volumen mayor de datos, o con escenarios más realistas. Aquí os dejo una serie de enlaces con fuentes de datos interesantes para jugar con ellos:

· Windows Azure MarketPlace:

El Windows Azure MarketPlace pone a nuestra disposición muchos conjuntos de datos gratuitos para nuestros análisis: desde información meteorológica hasta información de tráfico, pasando por bases de datos de vuelos comerciales.

¡Desde luego debería ser vuestra primera parada cuando estéis buscando datos!

· National Space Science Data Center:

La NASA pone a nuestra disposición un gran conjunto de datos divididos en varios catálogos. Uno de los más completos e interesantes es el NSSDC, que contiene información científica no solo de unas 550 misiones de la propia NASA, sino que también os podéis encontrar con información de lecturas de misiones de la antigua unión soviética, etc. Os recomiendo comenzar por el NSSDC Master Catalog (NMC) y daros una vuelta a ver con que os encontráis.

· EU Open Data Portal:

Recientemente inaugurado, nos proporciona información de todos los gobiernos de la Unión Europea respecto a aspectos tan dispares como distribución de aguas, utilización de camas de hospital, intervenciones policiales, etc.

Como podéis ver, si queremos aprender estas tecnologías nos hemos quedado sin excusas: podemos solicitar un clúster de Hadoop gratuito en Azure, tenemos documentación, tutoriales, y más repositorios de datos públicos de los que hubiéramos soñado… así que, vamos a ponernos manos a la obra y desmitifiquemos Big Data a base de ponerlo en práctica en el mundo real: nunca ha estado tan fácil.

 

Pablo Álvarez Doval

@PabloDovalhttps://geeks.ms/blogs/palvarez/

SQL/BI Team Lead

PlainConcepts