Skip to main content

Apache Hive

¿Qué es Apache Hive?

Apache Hive es un software de almacenamiento de datos de código abierto diseñado para leer, escribir y gestionar grandes conjuntos de datos extraídos del sistema de archivos distribuido Apache Hadoop (HDFS), un aspecto de un ecosistema de Hadoop más amplio.

Con una extensa documentación de Apache Hive y actualizaciones continuas, Apache Hive sigue innovando en el procesamiento de datos de una manera accesible.

Más temas para descubrir

La historia de Apache Hive

Apache Hive es un proyecto de código abierto que fue concebido por los cocreadores Joydeep Sen Sarma y Ashish Thusoo durante su etapa en Facebook. Hive comenzó como un subproyecto de Apache Hadoop, pero evolucionó hasta convertirse en un proyecto de primer nivel por sí mismo. Con las crecientes limitaciones de Hadoop y los trabajos de Map Reduce, y el aumento del tamaño de los datos de 10 GB al día en 2006 a 1 TB/día y a 15 TB/día en pocos años. Los ingenieros de Facebook no pudieron ejecutar los trabajos complejos con facilidad, lo que dio paso a la creación de Hive.

Apache Hive se creó con un doble objetivo: ofrecer un lenguaje declarativo basado en SQL que permitiera a los ingenieros conectar sus propios scripts y programas cuando SQL no era suficiente. Esto permitió que la mayor parte de la comunidad de ingeniería (aquella con experiencia en SQL) pudiera usar Hive con una interrupción o una recapacitación mínimas en comparación con otras alternativas.

En segundo lugar, proporcionó un almacén de metadatos centralizado (basado en Hadoop) de todos los conjuntos de datos de la organización. Aunque inicialmente se desarrolló dentro de Facebook, Apache Hive se utiliza y desarrolla por otras empresas como Netflix. Amazon mantiene una bifurcación de software de Apache Hive, incluida en Amazon Elastic MapReduce en Amazon Web Services.

¿Cuáles son algunas características de Hive?

Apache Hive permite el análisis de grandes volúmenes de datos alojados en HDFS de Hadoop y sistemas de archivos compatibles como Amazon S3, Azure Blob Storage, Azure Data Lake Storage, Google Cloud Storage y Alluxio.

Proporciona un lenguaje de consulta similar a SQL llamado HiveQL con esquema en lectura y convierte de manera transparente consultas a trabajos de Apache Spark, MapReduce y Apache Tez. Otras características de Hive incluyen lo siguiente:

  • Las funciones de datos de Hive ayudan a procesar y consultar grandes conjuntos de datos. Algunas de las funcionalidades que ofrecen estas funciones incluyen la manipulación de cadenas, la manipulación de fechas, la conversión de tipos, los operadores condicionales, las funciones matemáticas y otras.
  • Almacenamiento de metadatos en un sistema de gestión de bases de datos relacionales
  • Diferentes tipos de almacenamiento como Parquet, texto plano, RCFile, HBase, ORC y otros.
  • Operar con datos comprimidos almacenados en el ecosistema de Hadoop con algoritmos.
  • Funciones definidas por el usuario (UDF) integradas para manipular fechas, cadenas y otras herramientas de minería de datos. Hive admite la ampliación del conjunto de UDF para gestionar casos de uso no compatibles con las funciones integradas.
  • Consultas similares a SQL (HiveQL), que se convierten implícitamente en trabajos de MapReduce o Tez, o Spark.

Arquitectura de Apache Hive y componentes clave de Apache Hive

Los componentes clave de la arquitectura de Apache Hive son el Hive Server 2, el Lenguaje de Consulta de Hive (HQL), el metastore externo de Apache Hive y la consola Beeline de Hive.

Hive Server 2

El Hive Server 2 acepta solicitudes entrantes de usuarios y aplicaciones, crea un plan de ejecución y genera automáticamente un trabajo YARN para procesar las consultas SQL. El servidor también admite el optimizador y el compilador de Hive para agilizar la extracción y el procesamiento de datos.

Lenguaje de consulta de Hive

Al permitir la implementación de código similar a SQL, Apache Hive elimina la necesidad de utilizar códigos JavaScript extensos para clasificar datos no estructurados y permite a los usuarios realizar consultas con sentencias HQL integradas. Estas sentencias pueden utilizarse para navegar grandes conjuntos de datos, perfeccionar resultados y compartir datos de manera rentable y eficiente en términos de tiempo.

El Metastore de Hive

El repositorio central de la infraestructura de Apache Hive, el metastore, es donde se almacenan todos los metadatos de Hive. En el metastore, los metadatos también se pueden formatear en tablas de Hive y particiones para comparar datos en bases de datos relacionales. Esto incluye nombres de tablas, nombres de columnas, tipos de datos, información de particiones y ubicación de datos en HDFS.

Consola Beeline de Hive

En línea con otros sistemas de gestión de bases de datos (DBMS), Hive tiene su propia interfaz de línea de comandos integrada donde los usuarios pueden ejecutar sentencias HQL. Además, la consola de Hive también ejecuta controladores JDBC y ODBC de Hive, lo que permite realizar consultas desde una aplicación de conectividad abierta de bases de datos (ODBC) o conectividad de bases de datos de Java (JDBC).

¿Cómo funciona el software de Apache Hive?

El Hive Server 2 acepta solicitudes entrantes de usuarios y aplicaciones antes de crear un plan de ejecución y genera automáticamente un trabajo de YARN para procesar consultas SQL. El trabajo de YARN puede generarse como una carga de trabajo de MapReduce, Tez o Spark.

Esta tarea funciona entonces como una aplicación distribuida en Hadoop. Una vez procesada la consulta SQL, los resultados se devuelven al usuario final o a la aplicación, o se transmiten de vuelta al HDFS.

El metastore de Hive utilizará una base de datos relacional, como Postgres o MySQL, para conservar estos metadatos, y el servidor Hive 2 recuperará la estructura de la tabla como parte de su planificación de consultas. En algunos casos, las aplicaciones también pueden consultar el metastore como parte de su procesamiento subyacente.

Las cargas de trabajo de Hive se ejecutan luego en YARN, el administrador de recursos de Hadoop, para proporcionar un entorno de procesamiento capaz de ejecutar trabajos de Hadoop. Este entorno de procesamiento consta de memoria asignada y CPU de los distintos nodos de trabajo del clúster de Hadoop.

YARN intentará aprovechar la información de metadatos de HDFS para garantizar que el procesamiento se implemente donde residen los datos necesarios, con MapReduce, Tez, Spark o Hive, que pueden generar automáticamente código para consultas SQL como trabajos de MapReduce, Tez o Spark.

A pesar de que Hive solo lleva poco tiempo utilizando MapReduce, la mayoría de las implementaciones de Cloudera Hadoop tendrán Hive configurado para utilizar MapReduce o, en ocasiones, Spark. Las implementaciones de Hortonworks (HDP) suelen tener Tez configurado como motor de ejecución.

¿Cuáles son los cinco tipos de datos diferentes que utiliza Apache Hive?

Gracias al uso del procesamiento por lotes, Apache Hive es capaz de extraer y analizar petabytes de datos de forma eficiente a altas velocidades, lo que lo hace ideal no solo para procesar los datos, sino también para ejecutar consultas ad hoc.

Los tipos de datos de Apache Hive se agrupan en cinco categorías principales: Numéricos, de Fecha/Hora, de Cadena, Complejos y Varios.

Tipos de datos numéricos

Como su nombre indica, estos tipos de datos son tipos de datos basados en números enteros. Ejemplos de estos tipos de datos son “TINYINT”, “SMALLINT”, “INT” y “BIGINT”.

Tipos de datos de fecha/hora

Estos tipos de datos permiten a los usuarios introducir una hora y una fecha, siendo 'TIMESTAMP', 'DATE' e 'INTERVAL' las entradas aceptadas.

Tipos de datos de cadena

Una vez más, este tipo de datos es muy sencillo y permite implementar texto escrito, o 'cadenas', como datos para su procesamiento. Los tipos de datos de cadena incluyen 'STRING', 'VARCHAR' y 'CHAR'.

Tipos de datos complejos

Uno de los tipos de datos más avanzados, los tipos complejos registran datos más elaborados y constan de tipos como 'STRUCT', 'MAP', 'ARRAY' y 'UNION'.

Tipos varios

Los tipos de datos que no encajan en ninguna de las otras cuatro categorías se conocen como tipos de datos varios y pueden aceptar entradas como “BOOLEAN” o “BINARY”.

Cómo funciona Map Join en Hive Apache

En Apache Hive, Map Join es una función que se emplea para aumentar la velocidad y la eficiencia de una consulta combinando, o más bien “uniendo”, datos de dos tablas sin pasar por las etapas Map-Reduce del proceso.

¿Qué es un sistema de administración de bases de datos relacionales (RDBMS) y cómo lo utiliza Apache Hive?

Un sistema de administración de bases de datos relacionales (RDBMS) es un modelo de base de datos que funciona almacenando metadatos en una estructura de tablas basada en filas o columnas y permite la conexión y comparación de diferentes conjuntos de datos.

Al utilizar un RDBMS, Apache Hive puede garantizar que todos los datos se almacenen y procesen de forma segura, confiable y precisa, ya que las funciones integradas, como la seguridad basada en roles y las comunicaciones cifradas, garantizan que solo las personas adecuadas tengan acceso a la información extraída.

¿Cuál es la diferencia entre Apache Hive y un RDBMS tradicional?

Existen algunas diferencias clave entre Apache Hive y un RDBMS:

  • Las funciones de RDBMS operan con lecturas y escrituras repetidas, mientras que Hive opera con escritura única y lectura múltiple.
  • Hive sigue la regla de esquema en lectura, lo que significa que no hay validación de datos, verificación o análisis, solo se copian/mueven archivos. En bases de datos tradicionales, se aplica un esquema a una tabla que impone un esquema sobre una regla de escritura.
  • Dado que Hive se basa en Hadoop, debe cumplir las mismas restricciones de Hadoop y MapReduce que otros RDBMS quizá no tengan que cumplir.

Apache Hive vs. Apache Spark

Apache Spark, un marco analítico diseñado para procesar grandes volúmenes de datos en diversos conjuntos de datos, ofrece una potente interfaz de usuario capaz de admitir diferentes lenguajes, desde R hasta Python.

Hive proporciona una capa de abstracción que representa los datos como tablas con filas, columnas y tipos de datos para consultar y analizar mediante una interfaz SQL llamada HiveQL. Apache Hive admite transacciones ACID con Hive LLAP. Las transacciones garantizan una visión coherente de los datos en un entorno en el que varios usuarios/procesos acceden a los datos al mismo tiempo para realizar operaciones de creación, lectura, actualización y eliminación (CRUD).

Databricks ofrece Delta Lake, que es similar a Hive LLAP en el sentido de que proporciona garantías transaccionales ACID, pero brinda varios beneficios adicionales para mejorar el rendimiento y la confiabilidad al acceder a los datos. Spark SQL es el módulo de Apache Spark para interactuar con datos estructurados representados como tablas con filas, columnas y tipos de datos.

Spark SQL es compatible con SQL 2003 y usa Apache Spark como motor distribuido para procesar los datos. Además de la interfaz Spark SQL, se puede utilizar una API DataFrames para interactuar con los datos mediante Java, Scala, Python y R. Spark SQL es similar a HiveQL.

Ambos usan la sintaxis ANSI SQL, y la mayoría de las funciones de Hive se ejecutarán en Databricks. Esto incluye funciones de Hive para conversiones y análisis de fecha/hora, colecciones, manipulación de cadenas, operaciones matemáticas y funciones condicionales.

Hay algunas funciones específicas de Hive que necesitarían ser convertidas al equivalente de Spark SQL o que no existen en Spark SQL en Databricks. Puedes esperar que toda la sintaxis ANSI SQL de HiveQL funcione con Spark SQL en Databricks.

Esto incluye funciones agregadas y analíticas de ANSI SQL. Hive está optimizado para el formato de archivo Optimized Row Columnar (ORC) y también es compatible con Parquet. Databricks está optimizado para Parquet y Delta, pero también es compatible con ORC. Siempre recomendamos usar Delta, que emplea Parquet de código abierto como formato de archivo.

Apache Hive vs. Presto

PrestoDB, más conocido como Presto, es un proyecto creado originalmente en Facebook. Es un motor de consultas SQL distribuido que permite a los usuarios procesar y analizar petabytes de datos a gran velocidad. La infraestructura de Presto soporta la integración tanto de bases de datos relacionales como no relacionales desde MySQL y Teradata hasta MongoDB y Cassandra.

Back to Glossary