Desde el comienzo de la irrupción convencional de Internet, muchas empresas proveedoras de motores de búsqueda y empresas/organizaciones de comercio electrónico lucharon con el crecimiento regular de los datos día a día. Incluso algunos sitios de redes sociales como Facebook, Twitter, Instagram, etc. también sufren el mismo problema. Hoy en día, numerosas asociaciones entienden que la información que recopilan es un activo rentable para conocer a sus clientes, el impacto de su actividad en el mercado, su rendimiento y la eficacia de su infraestructura, etc.
Es necesario resolver algunos grandes desafíos, como: ¿Cómo trasladaría alguien la estructura de datos existente a Hadoop cuando ese marco depende del sistema de base de datos relacional y el lenguaje de consulta estructurado (SQL)? ¿Y qué pasa con la seguridad de los datos, donde tanto los creadores de la base de datos maestra como los administradores y algunos usuarios regulares que usan SQL toman información de su almacén de datos?
Aquí es donde el papel de HIVE entra en escena. Hive proporciona un dialecto SQL conocido como Hive Query Language abreviado como HQL para recuperar o modificar los datos. que se almacena en el Hadoop. Apache Hive es un sistema de almacenamiento de datos de código abierto creado sobre Hadoop Cluster para consultar y analizar grandes conjuntos de datos almacenados en el sistema de archivos distribuido de Hadoop. HiveQL convierte automáticamente las consultas de tipo SQL en trabajos de MapReduce.
Historia de HIVE –
HIVE es desarrollado por el equipo de infraestructura de datos de Facebook. En Facebook, el clúster Hadoop de Hive es capaz de almacenar más de 2 petabytes de datos sin procesar y diariamente procesa y carga alrededor de 15 terabytes de datos. Ahora está siendo utilizado por muchas empresas también. Más tarde, la Fundación Apache se hizo cargo de Hive y lo desarrolló aún más y lo convirtió en un código abierto. También es utilizado y desarrollado por otras empresas como Netflix, la Autoridad Reguladora de la Industria Financiera (FINRA), etc.
Características –
Hive es un lenguaje basado en SQL declarativo, utilizado principalmente para el análisis de datos y la creación de informes. Hive opera en el lado del servidor de un clúster.
Hive proporciona flexibilidad y evolución de esquemas junto con resumen de datos, consulta de datos y análisis de una manera mucho más sencilla.
En Hive, podemos crear dos tipos de tablas: particionadas y divididas en cubos, lo que hace factible el procesamiento de datos almacenados en HDFS y también mejora el rendimiento.
Las tablas de Hive se definen directamente en el sistema de archivos de Hadoop (HDFS).
En Hive, tenemos controladores JDBC/ODBC.
Hive es rápido, escalable y fácil de aprender.
Hive tiene un optimizador basado en reglas para optimizar los planes.
Usando Hive también podemos ejecutar consultas Ad-hoc para analizar datos.
Arquitectura colmena –
- METASTORE: se utiliza para almacenar metadatos del esquema de tablas, hora de creación, ubicación, etc. También proporciona una partición de metadatos para ayudar al controlador a realizar un seguimiento del progreso de varios conjuntos de datos distribuidos en el clúster. Los metadatos ayudan al conductor a realizar un seguimiento de los datos y son cruciales. Por lo tanto, un servidor de respaldo replica regularmente los datos que se pueden recuperar en caso de pérdida de datos.
- DRIVER – Actúa como controlador. El controlador inicia la ejecución de la declaración mediante la creación de sesiones y supervisa el ciclo de vida y el progreso de la ejecución. También almacena metadatos generados durante la ejecución de una consulta HQL.
- COMPILADOR: se utiliza para compilar una consulta de Hive, que convierte la consulta en un plan de ejecución. Este plan contiene las tareas y los pasos que debe realizar Hadoop MapReduce para obtener el resultado traducido por la consulta.
- OPTIMIZADOR: optimiza y realiza transformaciones en un plan de ejecución para obtener un gráfico acíclico dirigido optimizado abreviado como DAG. Transformación, como convertir una canalización de combinaciones en una única combinación, y dividir las tareas, como aplicar una transformación en los datos antes de una operación de reducción, para proporcionar un mejor rendimiento y escalabilidad.
- EJECUTOR: ejecuta tareas después de que se hayan realizado la compilación y la optimización. Interactúa con el rastreador de trabajos de Hadoop para programar las tareas que se ejecutarán. Se encarga de canalizar las tareas asegurándose de que una tarea con dependencia se ejecute solo si se ejecutan todos los demás requisitos previos.
CLI, UI y Thrift Server: se utiliza para proporcionar una interfaz de usuario a un usuario externo para interactuar con Hive escribiendo consultas, instrucciones y monitoreando el proceso. El servidor Thrift permite que los clientes externos interactúen con Hive a través de una red, similar al protocolo JDBC u ODBC.
Laboral –
- En primer lugar, el usuario envía su consulta y CLI envía esa consulta al controlador.
- Luego, el controlador toma la ayuda del compilador de consultas para verificar la sintaxis.
- Luego, compile la solicitud de metadatos enviando una solicitud de metadatos a Metastore.
- En respuesta a esa solicitud, metastore envía metadatos al compilador.
- Luego, el compilador vuelve a enviar el plan al controlador después de verificar los requisitos.
- El Driver envía el plan al motor de ejecución.
- El motor de ejecución envía el trabajo al rastreador de trabajos y asigna el trabajo al rastreador de tareas. Aquí, la consulta ejecuta el trabajo de MapReduce. Y mientras tanto, el motor de ejecución ejecuta operaciones de metadatos con Metastore.
- Luego, el motor de ejecución obtiene los resultados del Node de datos y los envía al controlador.
- Por último, el controlador envía los resultados a la interfaz de la colmena.
Colmena Metastore –
Hive Metastore es el repositorio central de metadatos. Almacena metadatos para tablas de Hive (como su esquema y ubicación) y particiones en una base de datos relacional. Proporciona acceso de cliente a esta información mediante el uso de la API del servicio metastore.
Modos:
- Integrado: en Hive de forma predeterminada, el servicio metastore y los servicios de Hive se ejecutan en la misma JVM. En este modo, los datos en el sistema de archivos local se almacenan utilizando la base de datos derby integrada.
- Local: Hive es un marco basado en SQL, que debe tener varias sesiones. En el modo local, se permiten varias sesiones de Hive. Esto se puede lograr usando cualquier aplicación JDBC como MySQL que se ejecuta en una JVM separada.
- Remoto: en este modo, los servicios de metastore y hive se ejecutan en una JVM separada. Las API de Thrift Network son utilizadas por diferentes procesos para comunicarse entre ellos.
API de HIVE
Las API de Hive están expuestas para los desarrolladores que desean integrar sus aplicaciones y marco con el ecosistema de Hive. Estas son algunas de las API:
- CLI de HCatalog (basada en comandos): es una API basada en consultas, lo que significa que solo permite la ejecución y el envío de HQL.
- Metastore (JAVA): es una API basada en Thrift que se implementa mediante la interfaz IMetaStoreClient mediante JAVA. Esta API desacopla la capa de almacenamiento de metastore de Hive Internals.
- Ingesta de datos de transmisión (JAVA): se utiliza para escribir los datos de transmisión continua en tablas transaccionales utilizando las propiedades ACID de Hive.
- Streaming Mutation (JAVA): se usa en operaciones de transformación como Actualizar, Insertar, Eliminar para convertirlo en tablas transaccionales y usar la propiedad ACID.
- Hive-JDBC ( JDBC): se utiliza para admitir la funcionalidad de JDBC en Hive.
Limitaciones:
Apache Hive también tiene algunas limitaciones:
- Se permiten vistas de solo lectura, pero no se permiten vistas materializadas.
- No admite disparadores.
- Las consultas de Apache Hive tienen una latencia muy alta.
- No hay diferencia entre NULL y valores nulos.
¿En qué se diferencia HIVE de RDBMS?
- RDBMS admite esquemas en escritura, mientras que Hive proporciona esquemas en lectura.
- En Hive, podemos escribir una vez, pero en RDBMS podemos escribir tantas veces como queramos.
- Hive puede manejar grandes conjuntos de datos, mientras que RDBMS no puede manejar más de 10 TB.
- Hive es altamente escalable, pero la escalabilidad en RDBMS cuesta mucho.
- Hive tiene una función de agrupamiento que no existe en RDBMS.
Publicación traducida automáticamente
Artículo escrito por BHAVY_PRATAP y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA