Seguimos con los conceptos básicos acerca de Hadoop, vamos a explicar brevemente estos tres conceptos Hive, Sqoop y Pig con el fin de conocer sus diferencias y para que se emplea cada uno de ellos.

Hive consiste en un sistema de Data Warehouse para Hadoop que permite realizar consultas ad-hoc y analizar grandes volúmenes de datos almacenados en el sistema de archivos HDFS. Hive utiliza MapReduce para su ejecución y HDFS para su almacenamiento.

Hive proporciona un mecanismo para abstraer la estructura de estos datos y consultar los datos mediante un lenguaje parecido a SQL, llamado HiveQL.

Las sentencias HQL se descomponen por el servicio de HQL en tareas MapReduce y se ejecutan en un cluster. Las sentencias HQL se pueden ejecutar de distintas formas.

  • Podemos ejecutar las sentencias por línea de comandos, conocida como Hive Shell
  • Desde aplicaciones usando los conectores Java Database Connectivity (JDBC) o Open Database Connectivity (ODBC)
  • Desde un cliente llamado Hive Thrift. Este cliente es muy similar que cualquier cliente de base de datos que se instala en el equipo cliente de un usuario y se comunica con el servidor de Hive. Se puede usar el cliente Hive Thrift en aplicaciones escritas en C, Java, C#, PHP, Python o Ruby.

Hive tiene un alto parecido a las bases de datos tradicionales, pero debido a que Hive se basa en Hadoop y operaciones MapReduce, presenta algunas diferencias. Hadoop está pensado para realizar consultas secuenciales, entonces podemos tener consultas con una latencia muy alta, por lo tanto, se sería adecuado utilizar Hive en aplicaciones que requieren tiempos de respuesta muy rápidos. Y por otro lado, Hive está orientado a operaciones de lectura, por lo que no es adecuado utilizarlo en aplicaciones que impliquen un alto número de escrituras.

Veamos un ejemplo como funciona Hive internamente, como ejecuta MapReduce las operaciones de Hive. Fijénse en la Figura 1, presenta una instrucción Join tradicional de SQL, y el resultado lo guardamos en una tercera tabla llamada Compras_users. El diagrama de las tablas origen y el resultado sería como el mostrado en la Figura 1.

Figura1: Consulta y tablas de operación Join
Figura1: Consulta y tablas de operación Join

Hasta aquí, nada nuevo, no? Pero como ha ejecutado MapReduce esta consulta? Como se muestra en la Figura 2. En la Funcion Map, establece pares (clave, valor) para identificar cada una de las filas, luego realiza la operación de agrupación y ordena los resultados, y finalmente la operación de Reduce, simplifica el resultado hasta obtener el resultado de la operación Join.

Figura 2: Funcionamiento en MapReduce de consulta Join
Figura 2: Funcionamiento en MapReduce de consulta Join

 

Sqoop

Otro de los conceptos que existen en el ecosistema de Hadoop es Sqoop. Sqoop permite transferir gran volumen de datos de manera eficiente entre Hadoop y datos estructurados externos, como RDBMS y Data Warehouse. Aunque se trata de un proyecto todavía en desarrollo, esta teniendo gran éxito en el mundo empresarial, con la finalidad de solidificar los datos de Hadoop y los datos de DW.

Sqoop ofrece conectores para integrar Hadoop con otros sistemas, entre ellos SQL Server. Mediante este conector podemos importar datos desde:

  • Tablas de SQL Server a archivos delimitados HDFS
  • Tablas de SQL Server a archivos SequenceFiles en HDFS
  • Tablas de SQL Server a las tablas de Hive.
  • Consultas ejecutadas en SQL Server a archivos de texto delimitados de HDFS
  • Consultas ejecutadas en SQL Server a archivos SequenceFiles en HDFS
  • Consultas ejecutadas en SQL Server a las tablas de Hive.

Y podemos exportar datos:

  • De archivos delimitados HDFS a SQL Server
  • De archivos SequenceFiles en HDFS a SQL Server
  • Desde las tablas de Hive a las tablas de SQL Server

Pig

Pig ofrece una plataforma que consta de un lenguaje de alto de nivel para conseguir programas para analizar grandes volúmenes de datos. Pig presenta una característica importante que es el paralelismo, por lo que permite manejar grandes conjuntos de datos en su totalidad.

La infraestructura que Pig presenta es un compilador que produce secuencias de MapReduce. El lenguaje Pig consiste en un lenguaje textual llamado Pig Latin. Pig Latin abstrae la programación de Java a una notación que hace que los programas de MapReduce en alto nivel, es parecido a SQL en RDBMS. Además, los usuarios pueden crear sus propias funciones para algún propósito en concreto.

 

Con esto doy por concluida la serie de post sobre conceptos básicos acerca de Hadoop, en los próximos post veremos demostraciones como conectar Excel con Hive, importación de datos al cluster Hadoop Azure, etc.

 

Post publicados anteriormente:

Hadoop HDFS. Almacenamiento y consulta [Parte 1]

Hadoop HDFS. Almacenamiento y consulta [Parte 2]

Hadoop HDFS. Demo Hadoop Windows Azure

¿Qué es MapReduce?

 

0 Shares:
1 comment
  1. Gracias por tu labor, estoy empezando en el mundo del Big Data y este blog me ha sido muy util para entender los conceptos basicos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

You May Also Like
Leer más

Operador unario y jerarquías padre-hijo en SSAS MD

Recientemente nos hemos visto involucrados en un proyecto SSAS Multidimensional en el que existía una dimensión de cuentas padre-hijo bastante compleja y con un operador unario por en medio. Es por esto que nos hemos decidido a describir brevemente la implementación por defecto de SSAS y la que utilizamos finalmente para mejorar el rendimiento.