Hadoop

Hadoop

¿Qué es Hadoop?


Hadoop es un proyecto opensource de la Apache Foundation, introducido en 2006, 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.

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.

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.