Desde los primeros días de la ruptura principal de Internet, los principales motores de búsqueda y las empresas de comercio electrónico han luchado con cantidades cada vez mayores de datos. Más recientemente, los sitios de redes sociales experimentaron el mismo problema. Hoy en día, muchas organizaciones se dan cuenta de que los datos que recopilan son un recurso valioso para comprender a sus clientes, el desempeño de sus negocios en el mercado y la efectividad de su infraestructura.
El ecosistema de Hadoop surgió como una forma rentable de trabajar con conjuntos de datos tan grandes. Impone un modelo de programación particular, llamado MapReduce, para dividir las tareas de cálculo en unidades que se puedan distribuir alrededor de un cluster con hardware básico de tipo servidor, proporcionando así una escalabilidad horizontal rentable. Debajo de este modelo de cómputo hay un sistema de archivos distribuido llamado Hadoop Distributed Filesystem (HDFS). Aunque el sistema de archivos es "conectable", ahora hay varias alternativas comerciales y de código abierto.
El ecosistema de Hadoop surgió como una forma rentable de trabajar con conjuntos de datos tan grandes. Impone un modelo de programación particular, llamado MapReduce, para dividir las tareas de cálculo en unidades que se puedan distribuir alrededor de un cluster con hardware básico de tipo servidor, proporcionando así una escalabilidad horizontal rentable. Debajo de este modelo de cómputo hay un sistema de archivos distribuido llamado Hadoop Distributed Filesystem (HDFS). Aunque el sistema de archivos es "conectable", ahora hay varias alternativas comerciales y de código abierto.
Sin embargo, queda un desafío; ¿Cómo se mueve una infraestructura de datos existente a Hadoop, cuando esa infraestructura se basa en bases de datos relacionales tradicionales y el Lenguaje de consulta estructurado (SQL)? ¿Qué pasa con la gran base de usuarios de SQL, tanto diseñadores como administradores expertos en bases de datos, como los usuarios ocasionales que usan SQL para extraer información de sus almacenes de datos?
Aquí es donde entra en juego Hive. Hive proporciona un dialecto SQL, llamado Hive Query Language (abreviado HiveQL o simplemente HQL) para consultar datos almacenados en un clúster Hadoop.
El conocimiento de SQL está muy extendido por una razón; Es un modelo efectivo y razonablemente intuitivo para organizar y utilizar datos. Mapear estas operaciones de datos familiares a la API Java MapReduce de bajo nivel puede ser desalentador, incluso para desarrolladores Java experimentados. Hive hace este trabajo sucio por ti, para que puedas concentrarte en la consulta misma. Hive traduce la mayoría de las consultas a trabajos MapReduce, explotando así la escalabilidad de Hadoop, al tiempo que presenta una abstracción SQL familiar.
Hive es más adecuado para aplicaciones de data warehouse, donde se analizan datos relativamente estáticos, no se requieren tiempos de respuesta rápidos y cuando los datos no cambian rápidamente.
Hive no es una base de datos completa. Las restricciones y limitaciones de diseño de Hadoop y HDFS imponen límites a lo que Hive puede hacer. La mayor limitación es que Hive no proporciona actualización, inserción ni eliminación a nivel de registro. Puede generar nuevas tablas a partir de consultas o generar resultados de consultas en archivos. Además, dado que Hadoop es un sistema batch, las consultas de Hive tienen una latencia más alta, debido a la sobrecarga de arrancar los trabajos MapReduce. Las consultas que terminarían en segundos para una base de datos tradicional demoran más para Hive, incluso para conjuntos de datos relativamente pequeños. Finalmente, Hive no proporciona transacciones.
Por lo tanto, Hive no proporciona características cruciales necesarias para OLTP, procesamiento de transacciones en línea. Se acerca más a ser una herramienta OLAP, procesamiento analítico en línea, pero como veremos, Hive no es ideal para satisfacer la parte "online" de OLAP, al menos actualmente, ya que puede haber una latencia significativa entre emitir una consulta y recibir una respuesta, tanto por la sobrecarga de Hadoop como por el tamaño de los conjuntos de datos a los que da servicio Hadoop.
Si necesitas funciones OLTP para datos a gran escala, deberías considerar usar una base de datos NoSQL. Los ejemplos incluyen HBase, una base de datos NoSQL integrada con Hadoop, Cassandra, y DynamoDB, en caso de que estés utilizando Elastic MapReduce (EMR) o Elastic Compute Cloud (EC2) de Amazon. Incluso se puede integrar Hive con estas bases de datos (entre otras).
Por lo tanto, Hive es más adecuado para aplicaciones data warehouse, donde se mantiene y extrae un conjunto masivo de datos para su análisis, mienería, presentación, etc.
Puesto que la mayoría de las aplicaciones de data warehouse se implementan utilizando bases de datos relacionales basadas en SQL, Hive reduce la barrera para mover estas aplicaciones a Hadoop. Las personas que conocen SQL pueden aprender Hive fácilmente. Sin Hive, estos usuarios tendrían que aprender nuevos lenguajes y herramientas para volver a ser productivos.
Del mismo modo, Hive facilita a los desarrolladores portar aplicaciones basadas en SQL a Hadoop, en comparación con otros lenguajes y herramientas de Hadoop.
Sin embargo, como la mayoría de los dialectos de SQL, HiveQL no se ajusta al estándar ANSI SQL y difiere de varias maneras de los dialectos SQL familiares proporcionados por Oracle, MySQL y SQL Server. (Sin embargo, está más cerca del dialecto SQL de MySQL).
Este artículo proporciona una primera introducción con ejemplos a HiveQL para todos los usuarios, desde desarrolladores, administradores de bases de datos y arquitectos, hasta usuarios menos técnicos, como analistas de negocios.
Hasta la próxima !
0 comentarios:
Publicar un comentario
Gracias por participar en esta página.