Tag Archives: Hadoop

Hadoop, Hive, Pig, Sqoop, Impala, a vista de pájaro

Estoy asistiendo al curso de “Desarrollo de aplicaciones Big Data con Apache Spark y Apache Hadoop” en el COIICV que está impartiendo Mario Renau de una forma magistral. El curso está resultando bastante interesante, y sobre todo estoy consiguiendo hacerme una fotografía de todo, o por lo menos de gran parte, el universo Hadoop.

Hadoop, como parte de fundamental del Big Data, es algo que me ha interesado desde hace tiempo, y a lo que he intentado acercarme en varias ocasiones, tengo que confesar, sin demasiado éxito. Ahora me doy cuenta que el problema que tenía era que no conseguía percibir la “big picture” de todo esto. En seguida empezaba a aparecer mucho software adicional que se integraba con Hadoop, que te vendían que si eran capas de abstracción, que si la solución definitiva, que si con esto lo conseguirás todo … como siempre en estos casos, todo es relativo.

En esta entrada quiero dar una visión muy sencilla de lo que es Hadoop y alguno de estos componentes, y tiene que ser muy sencilla porque en estos momentos, mis conocimientos son muy limitados, los de alguien que está empezando a jugar con todo esto, pero quizás, ahora sea el momento ideal para poder dar este enfoque sencillo, ya que seguramente, cuanto más avance, más complicado se vuelva.

hadoop-bird

Soy consciente de que para un experto, las líneas de conexión no serán exactamente así, que serán mucho más complejas y que habrá toda una serie de condicionantes y circunstancias que quedan fuera del gráfico anterior, pero de nuevo, quiero decir que es una simplificación de y para principiantes.

En el centro de todo está HDFS, que es el Sistema de Ficheros Distribuido de Hadoop. Gracias a él Hadoop puede guardar tanta cantidad de datos para su procesamiento, de forma distribuida, segura y eficiente. HDFS gestiona todas las necesidades de lectura y escritura de una forma transparente, nosotros no nos preocupamos de que nodo guarda tal o cual, trabajamos directamente con el fichero y HDFS se encarga de obtener de los nodos distribuidos lo que le pedimos.

Hadoop Map Reduce es la implementación del modelo teórico Map – Reduce, y que es la base de cualquier proceso en Hadoop. En Hadoop, al final, cualquier tarea se traduce en procesos Map Reduce.

Siguiendo en el centro de la imagen, acabamos con Hadoop YARN que es el encargado de orquestar todo el cluster Hadoop, de asegurar la disponibilidad, rendimiento, acceso óptimo a los datos, etc.

Hasta aquí lo que sería el core de Hadoop, y “simplemente” con esto ya podríamos funcionar, pero si algo hay que reconocer es que Hadoop es complejo y farragoso, de ahí que aparezca software que intenta darle una cara más amable, más parecida a herramientas a las que estamos más acostumbrados, como consultas SQL o lenguajes de scripting. Estas son las cajas en rojo que he dibujado para Hive, HCatalog, Impala, Pig y Scoop.

Hive en mi opinión es realmente interesante, su función principal es hacer que podamos trabajar con todos los ficheros almacenados en el sistema HDFS como si fueran tablas de una base de datos relacional. Muy a groso modo, nos permite definir estructura en forma de tabla para los ficheros, soportando múltiples formatos, para posteriormente poder consultar esa tabla (y otras) con sentencias SQL que seguro conocemos bien. Hive se encarga de traducir las sentencias SQL en procesos Map – Reduce, que se ejecutan directamente en Hadoop para darnos el resultado.

HCatalog es un API Rest sobre Hive cuyo objetivo es facilitar la integración de otras herramientas con Hive mediante el uso de dicho API.

Impala ofrece la misma función que Hive, ofrecer un interfaz SQL sobre Hadoop, pero la diferencia fundamental es que intenta que las consultas se ejecuten más rápidamente mediante un consumo adicional (parece que realmente alto) de memoria. Impala guarda en memoria gran parte de los datos para ofrecer este alto rendimiento.

Pig es un lenguaje de scripting sobre Hadoop con funciones de alto nivel que facilita la programación, reduciendo drásticamente la complejidad y las líneas de código. Cargar datos, filtrar, recorrer, agrupar, son algunos ejemplos. De la misma forma que Hive, traduce las instrucciones de más alto nivel a procesos Map Reduce que se ejecutan en Hadoop.

Por último Sqoop, es una herramienta para importar y exportar datos entre bases de datos relacionales y HDFS.

El universo Hadoop tiene muchísimas más herramientas satélite que ofrecen funcionalidades muy interesantes, pero mi limitada visión llega hasta aquí.