Big Data, Hadoop y Windows Azure (I)

Si analizáramos el tipo y la cantidad de información que se puede llegar a generar a diario veríamos que cada día se generar muchísima información, mucha más de la que se generaba hace unos años, y que cada vez ésta es de diferente tipo. Por ejemplo, basta con hablar de toda la información que se genera a diario en las redes sociales como Twitter y Facebook para darse cuenta del volumen diario que puede generarse cada día. Pero no sólo pensad en redes sociales, pensad en cualquier otra empresa, como podría ser una empresa eléctrica o de energía, la cantidad de información diaria que podría coger de todos los dispositivos de medición y monitorización de los que disponen. A toda esta información es a lo que se conoce como Big Data.

En los sistemas tradicionales sólo parte de esta información se trata y muchas veces hay muchísima de esta información que se deja de procesar,  ya que por ejemplo, su almacenamiento sería carísimo, difícil de procesar e incluso en muchos casos difícil de entender el cómo se debe analizar y tratar. En estos sistemas tradicionales raramente la información pasa de varios terabytes, cuando en Big Data estamos hablando de volúmenes de información de petabytes y hexabytes.

01-TraditionalProcessing

Básicamente la información tiene tres que factores que lo hacen complicado de manejar; El volumen de información que se hoy en día en altísimo y cada día se genera mucha más. El tipo de información es muy diverso, teniendo que manejar en muchos cosos información estructura y desestructurada. Por último, la velocidad, cada vez esta información aparece más rápidamente.

03-RDBMSMapReduce

Es para este tipo de escenarios, para el tratamiento de esta información que se conoce como Big Data, dónde encaja Apache Hadoop.

Hadoop es un framework open source para el procesado, almacenamiento y análisis de cantidades enormes de información, información de diversos orígenes (estructurados, desestructurados…). Inicialmente fue Yahoo! el creador de Hadoop basándose en MapReduce, un sistema desarrollado por Google sobre el año 2000 creado para indexación de la Web. Fue diseñado para ser capaz de analizar petabytes y hexabytes de información de forma distribuida con la capacidad de procesado paralelo de toda la información almacenada.

¿Quién lo usa? Amazon, Facebook, Google, IBM, Intel Research, Yahoo!…

Microsoft ha contribuido a este proyecto con dos distribuciones de Hadoop para Windows, claro está también open source, que pueden funcionar sobre un entorno Windows on-premise o sobre Windows Azure.

El sistema que hay por debajo a grandes rasgos puede “resultar sencillo”, pero muy efectivo.

Hadoop es capaz de recibir información de diversos orígenes, tanto estructurada como desestructurada, para almacenarla en sus propio sistema de almacenamiento, conocido como Hadoop Distributed File System (HDFS). Cuando recibe la información la divide en múltiples partes (chunks) y lo almacena en los diferentes nodos que forman parte del cluster de Hadoop. La información se replica entre diferentes nodos para que si un nodo falla la información no se pierda.

Una cosa muy interesante del sistema es que está diseñado para poder funcionar en cualquier tipo de hardware, lo que provoca que realmente cualquier tipo de máquina podría formar parte del cluster de Hadoop, lo que hace que la solución pueda ser más económica.

El análisis de la información se realiza con una técnica conocida como MapReduce.

Una vez almacenada la información los usuarios puede crear un “Map” job para que Hadoop realice las acciones que quiere el usuario. Éstas acciones no son más que un programada desarrollado por el usuario en Java (veremos otras opciones). Hadoop es capaz de localizar la información en los diferentes nodos, procesarla de forma paralela en cada nodo para realizar la acción solicitada por el usuario.

Una vez el procesado se encuentra finalizado en cuando se inicia la tarea de “Reduce” que recoge los diversos resultados generados en cada nodo y los unifica para poder ofrecérselos al usuario.

02-MapReduce

Una cosa interesante es que alrededor de Hadoop existen múltiples proyectos open source que aumentan enormemente las capacidades de este sistema y que lo hacen aún más interesante.

Hive, es una infraestructura de data warehouse sobre Hadoop diseñada inicialmente para ser capaces de entender toda la información de Facebook. Ofrece una interface SQL (HiveQL) para ser capaz de manejar la información almacenada por Hadoop. Microsoft ha desarrollado un add-in de Hive para analizar y visualizar los datos de Hadoop desde Excel o PowerPivot.

Pig, es otro lenguaje desarrollador por Yahoo! para la consulta y análisis de la información.

Sqoop es un framework open source que permite conectar cualquier RDBMS con HDFS.

Como he comentado anteriormente, Microsoft también está contribuyendo a este proyecto con sus propios aportes, en este caso con dos nuevas distribuciones, una para entornos Windows Server y otro para Windows Azure. Claro está, todas las contribuciones realizadas por Microsoft vuelven a la comunidad como proyectos open source.

En los próximos post espero poder profundizar en la oferta de Microsoft para Hadoop, que aportes ha realizado, que nueva funcionalidad incluye y por supuesto, cómo funciona.

Published 10/4/2012 9:03 por Ibon Landa
Comparte este post:
http://geeks.ms/blogs/ilanda/archive/2012/04/10/big-data-hadoop-y-windows-azure-i.aspx

Comentarios

# re: Big Data, Hadoop y Windows Azure (I)

Ibon, un tema muy interesante, serán unos posts a seguir con atención. Gracias.

Tuesday, April 10, 2012 10:27 AM por Kiquenet