hadoop hbase hive

hadoop - ¿Cómo se compara Hive con HBase?



(7)

Estoy interesado en descubrir cómo el Hive recientemente publicado ( http://mirror.facebook.com/facebook/hive/hadoop-0.17/ ) se compara con HBase en términos de rendimiento. La interfaz similar a SQL utilizada por Hive es mucho más preferible que la API de HBase que hemos implementado.


A partir de las versiones más recientes de Hive, han cambiado muchas cosas que requieren una pequeña actualización ya que Hive y HBase están ahora integrados . Lo que esto significa es que Hive se puede usar como una capa de consulta en un almacén de datos HBase. Ahora, si las personas están buscando interfaces de HBase alternativas, Pig también ofrece una forma realmente agradable de cargar y almacenar datos de HBase . Además, parece que Cloudera Impala puede ofrecer un rendimiento sustancial basado en consultas basadas en Hive además de HBase. Ellos reclaman consultas hasta 45 veces más rápidas que las configuraciones tradicionales de Hive.


Desde una perspectiva, Hive consta de cinco componentes principales: una gramática y un analizador de tipo SQL, un planificador de consultas, un motor de ejecución de consultas, un repositorio de metadatos y un diseño de almacenamiento en columnas. Su enfoque principal son las cargas de trabajo analíticas al estilo del almacén de datos, por lo que no es necesaria la recuperación de valores de latencia baja por clave.

HBase tiene su propio repositorio de metadatos y el diseño de almacenamiento en columnas. Es posible crear consultas HiveQL sobre tablas HBase, lo que permite a HBase aprovechar la gramática y el analizador de Hive, el planificador de consultas y el motor de ejecución de consultas. Ver http://wiki.apache.org/hadoop/Hive/HBaseIntegration para más detalles.


Es difícil encontrar mucho acerca de Hive, pero encontré este snippet en el sitio de Hive que se inclina fuertemente a favor de HBase (negrita agregada):

Hive se basa en Hadoop, que es un sistema de procesamiento por lotes. En consecuencia, este sistema no promete y no puede prometer bajas latencias en las consultas . El paradigma aquí es estrictamente la presentación de trabajos y la notificación cuando se completan los trabajos en lugar de las consultas en tiempo real. Como resultado, no debe compararse con sistemas como Oracle, donde el análisis se realiza sobre una cantidad de datos significativamente menor, pero el análisis avanza mucho más de manera iterativa, con tiempos de respuesta entre iteraciones que son de menos de unos pocos minutos. Para las consultas de Hive, los tiempos de respuesta, incluso para los trabajos más pequeños, pueden ser del orden de 5 a 10 minutos y para trabajos más grandes, esto puede incluso suponer horas.

Como HBase e HyperTable se basan en el rendimiento (están modelados en la BigTable de Google), suenan como si fueran mucho más rápidos que Hive, a costa de la funcionalidad y una curva de aprendizaje más alta (p. Ej., No tienen combinaciones o el SQL -como sintaxis).


Hive es una herramienta de análisis. Al igual que pig, se diseñó para el procesamiento por lotes ad hoc de cantidades de datos potencialmente enormes mediante el aprovechamiento de map reduce. Piensa en terbytes. Imagina intentar hacer eso en una base de datos relacional ...

HBase es un almacén de valores de claves basado en columnas basado en BigTable. No puede hacer consultas per se, aunque puede ejecutar trabajos de reducción de mapa sobre HBase. Su caso de uso principal es buscar filas por clave o escanear rangos de filas. Una característica importante es poder tener una localidad de datos cuando se escanea a través de rangos de claves de fila para una ''familia'' de columnas.


Para comparar Hive con Hbase, me gustaría recordar la siguiente definición:

Una base de datos diseñada para manejar transacciones no está diseñada para manejar análisis. No está estructurado para hacer bien los análisis. Un almacén de datos, por otro lado, está estructurado para que el análisis sea rápido y fácil.

Hive es una infraestructura de almacenamiento de datos construida sobre Hadoop que es adecuada para trabajos ETL de larga ejecución. Hbase es una base de datos diseñada para manejar transacciones en tiempo real


Para mi humilde conocimiento, Hive es más comparable a Pig. Hive es similar a SQL y Pig está basado en script. Hive parece ser más complicado con la optimización de consultas y los motores de ejecución, así como requiere que los usuarios finales especifiquen los parámetros del esquema (partición, etc.). Ambos tienen la intención de procesar archivos de texto o sequenceFiles.

HBase es para almacenamiento y recuperación de datos de valores clave ... puede escanear o filtrar esos pares de valores clave (filas). No puede hacer consultas en filas (clave, valor).


Hive y HBase se usan para diferentes purpose .

Colmena:

Pros:

  1. Apache Hive es una infraestructura de data warehouse construida sobre Hadoop .
  2. Permite consultar los datos almacenados en HDFS para su análisis a través de HQL , un lenguaje de tipo SQL , que se convertirá en series de trabajos de reducción de mapas.
  3. Solo ejecuta procesos por lotes en Hadoop.
  4. es compatible con JDBC , también se integra con herramientas basadas en SQL existentes
  5. Hive admite particiones
  6. Es compatible con la consulta analítica de los datos recopilados durante un período de tiempo

Contras:

  1. Actualmente no es compatible con las declaraciones de actualización
  2. Se debe proporcionar con un esquema predefinido para mapear archivos y directorios en columnas

HBase:

Pros:

  1. Una base de datos escalable y distribuida que admite el almacenamiento de datos estructurados para tablas grandes
  2. Proporciona acceso de lectura / escritura en tiempo real y aleatorio a su Big Data. Las operaciones de HBase se ejecutan en tiempo real en su base de datos en lugar de los trabajos de MapReduce
  3. admite particiones en tablas, y las tablas se dividen en familias de columnas
  4. Escala horizontalmente con gran cantidad de datos mediante el uso de Hadoop
  5. Proporciona acceso basado en claves a datos cuando se almacena o recupera. Admite agregar o actualizar filas.
  6. Admite la versión de datos.

Contras:

  1. Las consultas de HBase están escritas en un lenguaje personalizado que debe ser aprendido
  2. HBase no es totalmente compatible con ACID
  3. No se puede usar con patrones de acceso complicados (como combinaciones)
  4. Tampoco es un sustituto completo de HDFS al hacer un lote grande MapReduce

Resumen:

Hive se puede usar para consultas analíticas mientras que HBase para consultas en tiempo real. Los datos incluso se pueden leer y escribir desde Hive a HBase y viceversa.