¿Cuándo utilizar Hadoop, HBase, Hive y Pig?
¿ Cuáles son los beneficios de utilizar Hadoop , HBase o Hive ?
Según tengo entendido, HBase evita el uso de map-reduce y tiene un almacenamiento orientado a columnas además de HDFS. Hive es una interfaz similar a SQL para Hadoop y HBase .
También me gustaría saber cómo se compara Hive con Pig .
MapReduce es solo un marco informático . HBase no tiene nada que ver con eso. Dicho esto, puede colocar o recuperar datos de manera eficiente hacia/desde HBase escribiendo trabajos de MapReduce. Alternativamente, puede escribir programas secuenciales utilizando otras API de HBase, como Java, para colocar o recuperar los datos. Pero usamos Hadoop, HBase, etc. para manejar cantidades gigantescas de datos, por lo que eso no tiene mucho sentido. El uso de programas secuenciales normales sería muy ineficiente cuando los datos son demasiado grandes.
Volviendo a la primera parte de su pregunta, Hadoop es básicamente 2 cosas: un sistema de archivos distribuido (HDFS) + un marco de computación o procesamiento (MapReduce) . Como todos los demás FS, HDFS también nos proporciona almacenamiento, pero de manera tolerante a fallas con alto rendimiento y menor riesgo de pérdida de datos (debido a la replicación). Pero, al ser un FS, HDFS carece de acceso aleatorio de lectura y escritura . Aquí es donde HBase entra en escena. Es un gran almacén de datos distribuido y escalable , inspirado en BigTable de Google. Almacena datos como pares clave/valor.
Llegando a la colmena. Nos proporciona instalaciones de almacenamiento de datos además de un clúster de Hadoop existente. Además de eso, proporciona una interfaz similar a SQL que facilita su trabajo, en caso de que tenga experiencia en SQL. Puede crear tablas en Hive y almacenar datos allí. Además de eso, incluso puede asignar sus tablas HBase existentes a Hive y operar con ellas.
Mientras que Pig es básicamente un lenguaje de flujo de datos que nos permite procesar enormes cantidades de datos de forma muy fácil y rápida. Pig básicamente tiene 2 partes: el Pig Interpreter y el lenguaje PigLatin . Escribe el script Pig en PigLatin y utiliza el intérprete Pig para procesarlo. Pig nos hace la vida mucho más fácil; de lo contrario, escribir MapReduce no siempre es fácil. De hecho, en algunos casos puede llegar a ser realmente doloroso.
Hace algún tiempo escribí un artículo sobre una breve comparación de diferentes herramientas del ecosistema Hadoop . No es una comparación detallada, sino una breve introducción a cada una de estas herramientas que puede ayudarle a comenzar. (Solo para agregar a mi respuesta. No se pretende autopromoción)
Tanto las consultas de Hive como de Pig se convierten en trabajos de MapReduce bajo el capó.
HT
Recientemente implementé una plataforma Hive Data en mi empresa y puedo hablar con ella en primera persona ya que era un equipo de un solo hombre.
Objetivo
- Tener los archivos de registro web diarios recopilados de más de 350 servidores y consultables diariamente a través de algún lenguaje similar a SQL.
- Para reemplazar los datos de agregación diarios generados a través de MySQL con Hive
- Cree informes personalizados a través de consultas en Hive
Opciones de arquitectura
Comparé las siguientes opciones:
- Colmena+HDFS
- Hive+HBase : las consultas eran demasiado lentas, así que descarté esta opción
Diseño
- Los archivos de registro diarios se transportaron a HDFS
- Los trabajos de MR analizaron estos archivos de registro y archivos de salida en HDFS
- Cree tablas de Hive con particiones y ubicaciones que apunten a ubicaciones HDFS
- Cree scripts de consulta de Hive (llámelo HQL si lo desea como diferencia de SQL ) que a su vez ejecutaron trabajos de MR en segundo plano y generaron datos de agregación.
- Coloque todos estos pasos en un flujo de trabajo de Oozie , programado con el Coordinador diario de Oozie
Resumen
HBase es como un mapa. Si conoce la clave, podrá obtener el valor instantáneamente. Pero si desea saber cuántas claves enteras en Hbase están entre 1000000 y 2000000, eso no es adecuado solo para Hbase .
Si tiene datos que deben agregarse, acumularse y analizarse en filas, considere Hive .
Ojalá esto ayude.
Hive realmente es genial... Lo sé, lo he vivido durante 12 meses... También lo hace HBase ...
Del sitio web oficial de Apache: https://hadoop.apache.org/
Hadoop es un marco que permite el procesamiento distribuido de grandes conjuntos de datos en grupos de computadoras utilizando modelos de programación simples.
Algunos proyectos más, que forman parte de Hadoop:
- HBase™ : una base de datos distribuida y escalable que admite el almacenamiento de datos estructurados para tablas grandes.
- Hive ™: una infraestructura de almacenamiento de datos que proporciona resumen de datos y consultas ad hoc.
- Pig™ : un lenguaje de flujo de datos de alto nivel y un marco de ejecución para computación paralela.
La comparación de Hive Vs PIG se puede encontrar en esta publicación de SE .
HBASE no reemplazará a Map Reduce. HBase es una base de datos distribuida escalable y Map Reduce es un modelo de programación para el procesamiento distribuido de datos. Map Reduce puede actuar sobre los datos en HBASE durante el procesamiento.
Puede utilizar HIVE/HBASE para datos estructurados/semiestructurados y procesarlos con Hadoop Map Reduce
Hive debe usarse para consultas analíticas de datos recopilados durante un período de tiempo. Algunos ejemplos: calcular tendencias, resumir registros de sitios web, pero no se puede utilizar para consultas en tiempo real.
HBase se adapta a consultas de Big Data en tiempo real.
PIG se puede utilizar para construir flujos de datos, ejecutar trabajos programados, procesar grandes volúmenes de datos, agregarlos/resumirlos y almacenarlos en sistemas de bases de datos relacionales. Es bueno para análisis ad-hoc.
Hive se puede utilizar para análisis de datos ad hoc, pero no admite todos los formatos de datos no estructurados a diferencia de PIG.