Hadoop, el exitoso proyecto de código abierto supervisado por Apache Software Foundation, es una tecnología barata que le permite procesar grandes cantidades de datos muy diversos. Sus enormes ventajas Con respecto a los sistemas distribuidos típicos, no significa que no tenga inconvenientes, como latencia o problemas de compatibilidad de streaming y archivos por lotes, pero esto no compromete la robustez de este marco.
Como es sabido, Hadoop es un marco basado en Java que sigue dos conceptos simples: almacenar datos en el sistema de archivos distribuido de Hadoop (HDF) y procesarlos a través de MapReduce, el modelo de programación para el procesamiento de datos distribuidos.
MapReduce y HDFS
MapReduce hace buena la famosa máxima romana de Dividir y gobernar (divide y vencerás), ya que toma un problema complejo y lo divide en partes procesables en paralelo. Cada una de estas piezas las envía a un nodo del cluster o servidor para trabajar con ellas en las fases de mapeo (Map) y Reducir, en este caso tomando como entrada las listas obtenidas en el Mapa y generar una colección de valores.
Además, HDFS es un sistema de archivos distribuido que almacena grandes cantidades de datos y hardware económico. La potencia se logra uniendo nodos al cluster, es decir, equipos que no tienen características excepcionales, lo que facilita la reposición en caso de avería.
El uso de Hadoop con programas como HDFS o MapReduce le permite trabajar en paralelo con big data, ofreciendo una solución integrada y fácilmente escalable. En «Hadoop. The Definitive Guide», el famoso libro de Tom White, Hadoop se define como linealmente escalable (se pueden agregar nodos según las necesidades), con un alta disponibilidad (los archivos se replican tantas veces como sea necesario, lo que le otorga confiabilidad) y tolerancia a fallas.
De hecho, cuando se trabaja con MapReduce y HDFS en Hadoop se evitan las fallas del clúster servidores, es decir, el framework tiene el mismo comportamiento en caso de fallas del servidor, por lo que los procesos de cálculo no se abortan.
Esta tolerancia a fallas se traduce en una robustez para Hadoop lo que se suma a otras ventajas indiscutibles como el bajo costo de almacenamiento, la facilidad de uso, el rendimiento, la velocidad y la flexibilidad a la hora de analizar datos tanto estructurados como no estructurados.
Suponiendo que ningún sistema distribuido puede alcanzar máximos en consistencia, disponibilidad y tolerancia a fallas, según el profesor Eric Brewer, Hadoop está bastante cerca de estos tres requisitos, por lo que se puede decir que es un sistema distribuido con muy alto rendimiento.
El futuro de MapReduce
El desarrollo de Hadoop continúa avanzando con nuevas contribuciones que mejoran su usabilidad, como el framework Chispa apache, que puede mejorar el rendimiento de MapReduce, enriqueciendo su kernel. Aunque Spark podría sustituir a MapReduce o incluso actuar de forma independiente, convirtiéndose en sucesor de Hadoop, lo cierto es que tiene un gran potencial trabajando con ellos para mejorar problemas como latencia, análisis de datos en tiempo real y mayor eficiencia en las consultas que solicitan los datos de forma repetida. .
La versatilidad de Spark podría verse como un peligro para el futuro de Hadoop, que en su día marcó la diferencia frente a las bases de datos relacionales (RDBMS) como sistema distribuido de almacenamiento y procesamiento. Por ahora, muchos analistas creen que él es el principal candidato como sucesor de MapReduce o del propio Hadoop. Sea como sea, lo cierto es que Spark es un framework autónomo, pero su diseño le permite trabajar con el sistema de archivos distribuido de Hadoop. En particular, se puede ejecutar directamente en HDFS, dentro de MapReduce o para trabajar en paralelo con MapReduce en el mismo clúster.
Publicación relacionada:
Databricks para certificar software de terceros para Spark Apache
Hadoop si o no? Las preguntas para ayudarte a decidir
API de Hadoop 1.0.3: viaje a la nube
Créditos fotográficos: Equipo Cubie
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = «//connect.facebook.net/es_ES/all.js#xfbml=1&status=0»;
fjs.parentNode.insertBefore(js, fjs);
}(document, ‘script’, ‘facebook-jssdk’));