entre - apache spark vs hadoop
Diferencia entre HBase y Hadoop/HDFS (4)
Esta es una especie de pregunta ingenua, pero soy nuevo en el paradigma NoSQL y no sé mucho al respecto. Entonces, si alguien puede ayudarme a entender claramente la diferencia entre HBase y Hadoop, o si me da algunos consejos que pueden ayudarme a entender la diferencia.
Hasta ahora, hice algunas investigaciones y acc. Según entiendo, Hadoop proporciona un marco para trabajar con fragmentos de datos (archivos) en HDFS y HBase es el motor de base de datos por encima de Hadoop, que básicamente trabaja con datos estructurados en lugar de datos brutos. Hbase proporciona una capa lógica sobre HDFS tal como lo hace SQL. ¿Es correcto?
Por favor, siéntete libre de corregirme.
Gracias.
El proyecto Apache Hadoop incluye cuatro módulos clave
- Hadoop Common : las utilidades comunes que son compatibles con los otros módulos de Hadoop.
- Sistema de archivos distribuidos de Hadoop (HDFS ™) : sistema de archivos distribuido que proporciona acceso de alto rendimiento a los datos de las aplicaciones.
- HADOOP YARN : un marco para la programación de trabajos y la administración de recursos de clúster.
- Hadoop MapReduce : un sistema basado en YARN para el procesamiento paralelo de grandes conjuntos de datos.
HBase es una base de datos distribuida y escalable que admite el almacenamiento de datos estructurados para tablas grandes. Del mismo modo que Bigtable
aprovecha el almacenamiento de datos distribuidos proporcionado por el sistema de archivos de Google, Apache HBase ofrece capacidades similares a Bigtable sobre Hadoop y HDFS.
Cuándo usar HBase:
- Si su aplicación tiene un esquema variable donde cada fila es ligeramente diferente
- Si encuentra que sus datos se almacenan en colecciones, todo está codificado en el mismo valor
- Si necesita acceso de lectura / escritura aleatorio y en tiempo real a su Big Data.
- Si necesita acceso basado en claves a los datos cuando los almacena o los recupera.
- Si tiene una gran cantidad de datos con el clúster Hadoop existente
Pero HBase tiene algunas limitaciones
- No se puede usar para aplicaciones transaccionales clásicas o incluso para análisis relacionales.
- Tampoco es un sustituto completo de HDFS cuando se hace un gran lote de MapReduce.
- No habla SQL, tiene un optimizador, admite transacciones o uniones de registros cruzados.
- No se puede usar con patrones de acceso complicados (como combinaciones)
Resumen:
Considere HBase cuando cargue datos por clave, busque datos por clave (o rango), atienda datos por clave, consulte datos por clave o cuando almacene datos por fila que no se ajusten bien a un esquema.
Eche un vistazo a Do''s y Do not of HBase del blog cloudera .
Hadoop es básicamente 3 cosas, un FS (sistema de archivos distribuido Hadoop), un marco de cálculo (MapReduce) y un puente de gestión (aún otro negociador de recursos). HDFS le permite almacenar grandes cantidades de datos en forma distribuida (proporciona un acceso de lectura / escritura más rápido) y redundante (proporciona una mejor disponibilidad). Y MapReduce le permite procesar esta gran cantidad de datos de forma distribuida y paralela. Pero MapReduce no está limitado solo a HDFS. Al ser un FS, HDFS carece de la capacidad de lectura / escritura aleatoria. Es bueno para el acceso secuencial a datos. Y aquí es donde HBase entra en la imagen. Es una base de datos NoSQL que se ejecuta en la parte superior de su clúster Hadoop y le proporciona acceso aleatorio de lectura / escritura en tiempo real a sus datos.
Puede almacenar datos estructurados y no estructurados en Hadoop y HBase también. Ambos le proporcionan múltiples mecanismos para acceder a los datos, como el shell y otras API. Y, HBase almacena los datos como pares clave / valor de forma columnar, mientras que HDFS almacena los datos como archivos planos. Algunas de las características sobresalientes de ambos sistemas son:
Hadoop
- Optimizado para el acceso de transmisión de archivos de gran tamaño.
- Sigue una ideología de leer una vez, muchas.
- No es compatible con lectura / escritura aleatoria.
HBase
- Almacena los pares clave / valor en forma columnar (las columnas se agrupan juntas como familias de columnas).
- Proporciona acceso de baja latencia a pequeñas cantidades de datos desde un gran conjunto de datos.
- Proporciona un modelo de datos flexible.
Hadoop es más adecuado para el procesamiento de lotes fuera de línea, mientras que HBase se usa cuando tiene necesidades en tiempo real.
Una comparación análoga sería entre MySQL y Ext4.
Hadoop usa un sistema de archivos distribuido, es decir, HDFS para almacenar bigdata. Pero existen ciertas limitaciones de HDFS e Inorder para superar estas limitaciones, las bases de datos NoSQL como HBase, Cassandra y Mongodb surgieron.
Hadoop solo puede realizar el procesamiento por lotes y solo se accederá a los datos de manera secuencial. Eso significa que uno tiene que buscar todo el conjunto de datos, incluso para los trabajos más simples. Un gran conjunto de datos cuando se procesa da como resultado otro gran conjunto de datos, que también se debe procesar de forma secuencial. En este punto, se necesita una nueva solución para acceder a cualquier punto de datos en una sola unidad de tiempo (acceso aleatorio).
Al igual que todos los demás FileSystems, HDFS 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 sistema de archivos, HDFS carece de acceso aleatorio de lectura y escritura. Aquí es donde HBase entra en la imagen. Es una gran tienda de datos distribuida y escalable, modelada según la BigTable de Google. Cassandra es algo similar a hbase.
Referencia: http://www.quora.com/What-is-the-difference-between-HBASE-and-HDFS-in-Hadoop
Hadoop es un nombre general para varios subsistemas: 1) HDFS. Un sistema de archivos distribuidos que distribuye datos a través de un clúster de máquinas que se ocupa de la redundancia, etc. 2) Map Reduce. Un sistema de administración de trabajos sobre HDFS: para administrar trabajos de reducción de mapa (y otros tipos) que procesan los datos almacenados en HDFS.
Básicamente significa que es un sistema fuera de línea: usted almacena datos en HDFS y puede procesarlos ejecutando trabajos.
HBase por otro lado en una base de datos basada en columna. Utiliza HDFS como almacenamiento, que se ocupa de la copia de seguridad / redundency / etc pero es una "tienda en línea", lo que significa que puede consultarlo para filas / filas específicas, etc., y obtener un valor inmediato.