Big Data y Hadoop: Episodio (I)

Thursday, 14 September 2017

Big Data y Hadoop: Episodio (I)

Cuando leemos sobre Big Data, uno de las “buzzwords” con la que más nos encontramos es “Hadoop”. Aunque Hadoop lleva dando vueltas por el mundo tecnológico desde 2005 y ya existe mucha literatura técnica sobre el tema, en este post vamos a intentar explicar de forma sencilla qué es Hadoop y por qué es tan importante para el mundo del Big Data.

Hadoop es un proyecto opensource de la Apache Foundation, introducido en 2005, y desarrollado en Java cuyo objetivo es ofrecer un entorno de trabajo acorde con las necesidades del Big Data (las 4 "V"). Hadoop, por tanto,  está diseñado para trabajar con volúmenes de datos masivos (Volumen), estructurados o no (Variedad), y procesarlos de forma segura y eficiente (Veracidad/Velocidad) , tanto en costes como en tiempo.

Al principio, según aumentaba el volumen de datos de trabajo, la solución tradicional consistía en invertir en equipos más potentes, con mayores capacidades de almacenamiento-procesamiento, y, por supuesto,  más caros. Pero pronto se vio que había que plantearse otra forma de hacer las cosas. Ese camino no era viable. La clave estaba en distribuir, tanto el almacenamiento de la información, como su procesamiento, entre muchos equipos trabajando de forma coordinada en “clusters”, con uno o varios nodos maestros encargados de gestionar, por una parte el sistema de ficheros distribuido donde los datos se almacenan en diferentes bloques redundados; y por otra, la coordinación y ejecución de los distintos jobs o tareas entre los miembros del cluster.

Al trabajar de forma distribuida los retos principales eran: poder acceder a los datos, procesarlos a gran velocidad y evitar la pérdida de información si alguno de los nodos fallaba.

Ejemplo de un cluster Hadoop compuesto por tres nodos

Figura 1: Ejemplo de un cluster Hadoop compuesto por tres nodos


Hadoop dio respuesta a estos problemas, ofreciendo:


Fiabilidad. Distribuye los datos y las tareas entre distintos nodos. En caso de fallo de un nodo, la tarea se reasigna automáticamente a otro y los datos no se pierden porque están replicados en otros nodos del cluster.
Escalado horizontal: el mismo programa se puede probar en una máquina, y después escalarse a 1000, o a 4000 máquinas
APIS muy sencillas, tanto para procesamiento como para acceso a los datos
Potencia, al dividir el procesamiento entre distintas máquinas, se pueden procesar enormes volúmenes de datos en tiempos eficientes

Sus capacidades para distribuir la capacidad de almacenamiento y el procesamiento de los datos entre un gran número de máquinas, y ofrecer redundancia basada en software, se traducen en otra de las mayores ventajas de trabajar con Hadoop:  No hace falta comprar hardware especial, ni costosos sistemas RAID.  Puede ejecutarse sobre “commodity hardware”, lo cual supone una gran  flexibilidad y un importante ahorro.

Otra de las ventajas de Hadoop es su escalabilidad. Especialmente cuando se despliega en plataformas de nube pública como Microsoft Azure, Amazon AWS y Google Compute Cloud, que permiten ir añadiendo-reduciendo recursos según varíen las necesidades del negocio.  En estos casos se suelen usar los sistemas de almacenamiento propios de estas plataformas para desacoplar la computación del almacenamiento. Así, la computación se dedica a ejecutar procesar y analizar los datos en lugar de a mantener el sistema de archivos que los sustenta


Un poco de historia para situarnos

En realidad, los creadores de Hadoop, Doug Cutting y Mike Cafarella simplemente querían diseñar un motor de búsqueda open source, al que llamaron Nutch (en 2002). Pronto se tropezaron con las dificultades propias de trabajar con grandes volúmenes de datos. Vieron que su buscador era lento,  que necesitaban equipos muy potentes y que tenían que estar monitorizando continuamente que no fallaran los procesos.

Cuando poco después, Google publicó dos trabajos sobre su sistema de ficheros y la filosofía MapReduce (Google File System paper en Octubre 2003 y MapReduce paper en Diciembre de 2004) Cutting y Cafarella vieron la solución a sus problemas, ya que este nuevo enfoque les permitía automatizar muchas de los pasos que estaban realizando de forma manual. Se pusieron manos a la obra y en unos pocos meses, diseñaron (en Java) el sistema de ficheros y el entorno de procesamiento que permitía distribuir, tanto el procesamiento como el almacenamiento entre distintas máquinas.

Poco después, Cutting empezó a trabajar en Yahoo, donde había un gran interés en desarrollar tecnologías open source basadas en Map Reduce y el sistema de ficheros Google. Tomaron de Nutch la parte de almacenamiento y procesamiento y así, en 2005, nació Hadoop, como un nuevo proyecto open source de la Apache Software Foundation. El  nombre y la imagen,  lo tomaron del elefantito de peluche del hijo de Cutting.  El buscador Nutch quedó entonces como proyecto independiente.

Dough Cutting y el elefante de peluche Hadoop

Figura 2: Dough Cutting con el elefante de juguete que dio nombre a Hadoop

Como el origen de Hadoop fue un poco circunstancial, y lo que se buscaba era dar soporte al buscador Nutch, cuando se empezó a usar con una perspectiva más amplia aparecieron una serie de carencias. Para cubrir estas carencias, surgieron diferentes proyectos open source que iban complementado Hadoop, creando un auténtico ecosistema. Así, el pequeño elefante amarillo fue el primer animalito de un auténtico "zoológico", al que luego se fueron sumando otros más: cerditos, impalas, orcas, abejas con cabeza de elefante… hasta un “cuidador del zoo”, añadiendo un toque de humor a toda esta complejidad tecnológica. En un próximo post, hablaremos con más detalle del entorno Hadoop y las herramientas que lo conforman, pero como aperitivo, os dejamos algunos de sus coloridos logos en la siguiente imagen. Hay unos cuantos más…

Algunos componentes del ecosistema Hadoop

Figura 3: Algunos componentes del ecosistema Hadoop

Al igual que ocurre con otros proyectos Open Source, algunos fabricantes ofrecen distribuciones estables, que aderezan con herramientas propias y, sobre todo, soporte. Las más habituales son Cloudera Hadoop, HortonWorks, MapR, Microsoft HD Insight, IBM InfoShere BigInsights, AWSEMR (Elastic MapReduce),  etc. En particular, nosotros en  LUCA elegimos HortonWorks para ofrecer Big Data as a service en España.

Si tienes interés en conocer un poco la arquitectura de Hadoop, cómo funciona su sistema de ficheros y la filosofía MapReduce, no te pierdas el siguiente post

(Ya está publicada la serie completa. Puedes leerla aquí: )

No comments:

Post a Comment