Solución:
Hadoop es básicamente 3 cosas, un FS (Hadoop Distributed File System), un marco de cálculo (MapReduce) y un puente de administración (Yet Another Resource Negotiator). HDFS le permite almacenar grandes cantidades de datos de forma distribuida (proporciona un acceso de lectura / escritura más rápido) y redundante (proporciona una mejor disponibilidad). Y MapReduce le permite procesar estos enormes datos de manera distribuida y paralela. Pero MapReduce no se limita 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 escena. Es una base de datos NoSQL que se ejecuta en la parte superior de su clúster Hadoop y le brinda acceso aleatorio de lectura / escritura en tiempo real a sus datos.
Puede almacenar datos estructurados y no estructurados en Hadoop y también en HBase. Ambos le brindan múltiples mecanismos para acceder a los datos, como el shell y otras API. Y HBase almacena datos como pares clave / valor en forma de columnas, mientras que HDFS almacena datos como archivos planos. Algunas de las características más destacadas de ambos sistemas son:
Hadoop
- Optimizado para el acceso a la transmisión de archivos grandes.
- Sigue la ideología de escribir una vez y leer muchas.
- No admite lectura / escritura aleatoria.
HBase
- Almacena pares clave / valor en forma de columnas (las columnas se agrupan como familias de columnas).
- Proporciona acceso de baja latencia a pequeñas cantidades de datos dentro de un gran conjunto de datos.
- Proporciona un modelo de datos flexible.
Hadoop es más adecuado para el procesamiento por lotes sin conexión, mientras que HBase se usa cuando tiene necesidades en tiempo real.
Una comparación análoga sería entre MySQL y Ext4.
El proyecto Apache Hadoop incluye cuatro módulos clave
- Hadoop común: Las utilidades comunes que admiten los otros módulos de Hadoop.
- Sistema de archivos distribuido Hadoop (HDFS ™): Un sistema de archivos distribuido que proporciona acceso de alto rendimiento a los datos de la aplicación.
- Hadoop HILO: Un marco para la programación de trabajos y la gestión de recursos del clúster.
- MapReduce de Hadoop: A HILObasado en un sistema para el procesamiento paralelo de grandes conjuntos de datos.
HBase es una base de datos distribuida escalable que admite el almacenamiento de datos estructurados para tablas grandes. Tal como Bigtable
Aprovecha el almacenamiento de datos distribuido proporcionado por el sistema de archivos de Google, Apache HBase proporciona capacidades similares a Bigtable además de 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 están almacenados en colecciones, todos están codificados con el mismo valor
- Si necesita acceso de lectura / escritura aleatorio en tiempo real a su Big Data.
- Si necesita acceso basado en claves a los datos al almacenar o recuperar.
- Si tiene una gran cantidad de datos con el clúster de Hadoop existente
Pero HBase tiene algunas limitaciones
- No se puede utilizar para aplicaciones transaccionales clásicas o incluso análisis relacional.
- Tampoco es un sustituto completo de HDFS cuando se hace MapReduce por lotes grandes.
- No habla SQL, tiene un optimizador, admite transacciones de registros cruzados o uniones.
- 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), sirva 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 lo que debe hacer y lo que no debe hacer de HBase en el blog de cloudera.
Hadoop utiliza un sistema de archivos distribuido, es decir, HDFS para almacenar bigdata. Pero existen ciertas limitaciones de HDFS y, para superar estas limitaciones, se crearon bases de datos NoSQL como HBase, Cassandra y Mongodb.
Hadoop solo puede realizar el procesamiento por lotes y se accederá a los datos solo de manera secuencial. Eso significa que uno tiene que buscar en todo el conjunto de datos, incluso para los trabajos más simples. Un enorme conjunto de datos cuando se procesa da como resultado otro enorme conjunto de datos, que también debe procesarse secuencialmente. En este punto, se necesita una nueva solución para acceder a cualquier punto de datos en una sola unidad de tiempo (acceso aleatorio).
Como todos los demás sistemas de archivos, 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 escena. Es un gran almacén de datos distribuido, escalable, inspirado en BigTable de Google. Cassandra es algo similar a hbase.