Apache Hadoop (V) – HIVE Consultas “tipo SQL” sobre Hadoop

hive_logo
¿Un elefante-abeja? WTF!

 

Seguimos con los componentes de Hadoop. Hoy es uno de los más importantes y quizás más sencillos de instalar y configurar una vez tenemos nuestro clúster de hadoop bien montado.
 

Este post dará nociones básicas sobre HIVE pero no entraré en la instalación y configuración, puesto que es muy sencilla.

¿Qué es HIVE?

Hive es almacén de datos creado específicamente para Hadoop que nos facilita la tarea de sumarizar los datos pre-existentes en HDFS. La idea principal de Hive es la de funcionar como capa externa a Hadoop a modo de envoltorio, donde vamos a poder realizar consultas sobre el sistema de archivos que serán tratadas como MapReduces en modo nativo en HDFS.

Para poder realizar estas operaciones, los de Apache crearon un lenguaje de consultas a “base de datos” (recordemos que HDFS es un sistema de ficheros) muy similar a SQL, que denominaron HiveQL o HQL (dependiendo de en que libro lo leas lo verás de una manera u otra).

El corazón de esta idea se basa en el denominado MetaStore, que es un “lugar” donde se van a ir guardando toda la información relacionada con las operaciones en Hive, por lo tanto el día que queráis formatear Hive, deberéis borrar dicho directorio para tenerlo como el primer día.

Es una herramienta que utilizan en facebook y los chic@s de Hortonworks nos explican como se manejan con este componente.

Características especiales de Hive

Al ser una capa de alto nivel de un sistema de ficheros HDFS, hay algunas operaciones “tipo SQL” que son especiales en Hive. En concreto las operaciones de crear tablas que tiren de HDFS y la de carga de datos en Hive pueden ser ejemplos de ello:

Crear una tabla que “tire” de HDFS:

CREATE TABLE tablaDePrueba (campo1 string, campo2 int)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘;’
LINES TERMINATED BY ‘\t’
STORED AS TEXTFILE;

Cargar datos en la tabla:

LOAD DATA INPATH ‘/datos/pruebas/test/tablaPruebas’ OVERWRITE INTO TABLE tablaDePrueba;

Consulta a tabla:

SELECT campo1,campo2 FROM tablaDePrueba LIMIT 100 ORDER BY campo2 DESC;

También podemos hacer consultas a tablas que se encuentren en HBase (con el fin de no tener que realizar bulks loads a Hive de ficheros de texto plano), pero la penalización por la latencia es tan alta, que para que realmente nos sea rentable usar la combinación Hadoop + HBase + Hive necesitaremos un clúster enorme, de cientos de nodos (cosa que debe pasar en Facebook).

Y por hoy es todo. ¿Ha sido fácil eh? 🙂

b0e3cb28debd0cc08f2bb5482c638b51

Fuentes:

 

Hadoop Apache (III) – Zookeeper

 

_hadoopelephant_rgb1
La tipografía me recuerda a la F1 de los 80.

 

Integrations-ApacheZookeeper-340x216
¡El tipo este es un currito de mantenimiento de un Zoo! (tiene que oler a elefante amarillo fijo)

 

Vamos a ir a definiciones, pondré direcciones donde se puede obtener documentación sobre instalación y configuración.

¿Qué es Zookeeper?

Es un servicio centralizado que nos permite mantener conexiones estables entre servidores con distintas tecnologías. Nos provee de una interface simple para mantener la consistencia de datos y además es altamente personalizable.

¿Cómo funciona?

Básicamente realizáis la instalación de Zookeeper en unos servidores con Linux. Consiste en bajar la versión estable y descomprimirla. La configuráis a vuestro gusto, eligiendo el número de “gemelos” que vais a querer tener a la escucha. Una vez establecidos los sincronizais entre servidores y listo.

Un Up&Running de libro es: https://zookeeper.apache.org/doc/r3.4.8/zookeeperProgrammers.html

¿Qué tiene que ver con Hadoop?

Nos permitirá tener conectividad entre HBase y HDFS de Hadoop, para poder ejecutar los MapReduce correspondientes, por ejemplo.

Links

Aquí tenéis su página oficial: http://zookeeper.apache.org/

Algunos ejemplillos rápidos: http://es.wikipedia.org/wiki/Apache_ZooKeeper#Ejemplos_de_uso_t.C3.ADpicos

Es un post rápido, pero con info interesante.

Nos vemos en el siguiente post amig@s 🙂