Tutorial de HBase: Introducción a HBase y estudio de caso de Facebook



Este blog tutorial de HBase le presenta qué es HBase y sus características. También cubre el estudio de caso de Facebook Messenger para comprender los beneficios de HBase.

Como mencionamos en nuestro blog, HBase es una parte esencial de nuestro ecosistema Hadoop. Así que ahora, me gustaría llevarlo a través del tutorial de HBase, donde le presentaré Apache HBase, y luego, repasaremos el caso de estudio de Facebook Messenger. Vamos a cubrir los siguientes temas en este blog tutorial de HBase:

Tutorial de Apache HBase: Historia

Comencemos con la historia de HBase y conozcamos cómo ha evolucionado HBase durante un período de tiempo.





Historia de HBase - Tutorial de HBase - Edureka

  • Apache HBase sigue el modelo de BigTable de Google, que se utiliza para recopilar datos y atender solicitudes para varios servicios de Google como Maps, Finance, Earth, etc.
  • Apache HBase comenzó como un proyecto de la empresa Powerset para Natural Language Search, que manejaba conjuntos de datos masivos y escasos.
  • Apache HBase se lanzó por primera vez en febrero de 2007. Más tarde, en enero de 2008, HBase se convirtió en un subproyecto de Apache Hadoop.
  • En 2010, HBase se convirtió en el proyecto de nivel superior de Apache.

Tutorial de HBase | Bases de datos NoSQL | Edureka



Después de conocer la historia de Apache HBase, ¿le gustaría saber qué es Apache HBase? Avancemos más y echemos un vistazo.

Tutorial de Apache HBase: Introducción a HBase

HBase es un código abierto, multidimensional, distribuido, escalable y Base de datos NoSQL escrito en Java. HBase se ejecuta sobre HDFS (Sistema de archivos distribuido de Hadoop) y proporciona capacidades similares a BigTable para Hadoop. Está diseñado para proporcionar una forma tolerante a fallos de almacenar una gran colección de conjuntos de datos escasos.

Desde entonces, HBase logra un alto rendimiento y baja latencia al proporcionar un acceso de lectura / escritura más rápido en grandes conjuntos de datos. Por lo tanto, HBase es la elección para las aplicaciones que requieren acceso rápido y aleatorio a una gran cantidad de datos.



Proporciona compresión, operaciones en memoria y filtros Bloom (estructura de datos que indica si un valor está presente en un conjunto o no) para cumplir con el requisito de lectura-escritura rápida y aleatoria.

Entendamos con un ejemplo: Un motor a reacción genera varios tipos de datos de diferentes sensores como el sensor de presión, el sensor de temperatura, el sensor de velocidad, etc., lo que indica la salud del motor. Esto es muy útil para comprender los problemas y el estado del vuelo. Continuous Engine Operations genera 500 GB de datos por vuelo y hay 300 mil vuelos por día aproximadamente. Por lo tanto, Engine Analytics aplicado a dichos datos casi en tiempo real se puede utilizar para diagnosticar problemas de manera proactiva y reducir el tiempo de inactividad no planificado. Esto requiere un entorno distribuido para almacenar una gran cantidad de datos con lecturas y escrituras aleatorias rápidas para procesamiento en tiempo real. Aquí, HBase viene al rescate. Hablaré sobre la lectura y escritura de HBase en detalle en mi próximo blog en Arquitectura HBase .

Como sabemos, HBase es una base de datos NoSQL. Entonces, antes de comprender más sobre HBase, analicemos primero las bases de datos NoSQL y sus tipos.

Tutorial de Apache HBase: Bases de datos NoSQL

NoSQL significa No solo SQL . Las bases de datos NoSQL están modeladas de manera que pueden representar datos que no sean formatos tabulares, bases de datos relacionales no habilitadas. Utiliza diferentes formatos para representar datos en bases de datos y, por lo tanto, existen diferentes tipos de bases de datos NoSQL según su formato de representación. La mayoría de las bases de datos NoSQL aprovechan la disponibilidad y la velocidad sobre la coherencia. Ahora, avancemos y entendamos los diferentes tipos de bases de datos NoSQL y sus formatos de representación.

Tiendas de valores clave:

Es una base de datos sin esquema que contiene claves y valores. Cada clave apunta a un valor que es una matriz de bytes, puede ser una cadena, BLOB, XML, etc. Lamborghini es clave y puede apuntar a un valor Gallardo, Aventador, Murciélago, Reventón, Diablo, Huracán, Veneno, Centenario etc.

Bases de datos de almacenamiento de valores clave: Aerospike, Couchbase, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak, Berkeley DB.

Caso de uso

Los almacenes de valores clave manejan bien el tamaño y son buenos para procesar un flujo constante de operaciones de lectura / escritura con baja latencia. Esto los hace perfectos paraTiendas de perfiles y preferencias de usuario,Recomendaciones de productos Últimos artículos vistos en el sitio web de un minorista para impulsar futuras recomendaciones de productos para clientes.Los hábitos de compra de los clientes de servicios publicitarios dan como resultado anuncios personalizados, cupones, etc. para cada cliente en tiempo real.

Orientado a documentos :

Sigue el mismo par clave-valor, pero está semiestructurado como XML, JSON, BSON. Estas estructuras se consideran documentos.

Bases de datos basadas en documentos: Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, IBM Domino, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB.

Caso de uso

Como el documento admite un esquema flexible, la lectura y escritura rápida y la partición lo hacen adecuado para crear bases de datos de usuarios en varios servicios como Twitter, sitios web de comercio electrónico, etc.

Orientado a columnas:

En esta base de datos, los datos se almacenan en celdas agrupadas en columnas en lugar de filas. Las columnas se agrupan lógicamente en familias de columnas que se pueden crear durante la definición del esquema o en tiempo de ejecución.

Este tipo de bases de datos almacenan toda la celda correspondiente a una columna como entrada continua en disco, haciendo así mucho más rápido el acceso y la búsqueda.

Bases de datos basadas en columnas: HBase, Accumulo, Cassandra, Druid, Vertica.

Caso de uso

Es compatible con el gran almacenamiento y permite un acceso de lectura y escritura más rápido. Esto hace que las bases de datos orientadas a columnas sean adecuadas para almacenar los comportamientos de los clientes en sitios web de comercio electrónico, sistemas financieros como Google Finance y datos del mercado de valores, mapas de Google, etc.

Orientado a gráficos:

Es una representación gráfica perfecta y flexible, utilizada a diferencia de SQL. Estos tipos de bases de datos resuelven fácilmente los problemas de escalabilidad de direcciones, ya que contienen bordes y nodos que se pueden ampliar según los requisitos.

Bases de datos basadas en gráficos: AllegroGraph, ArangoDB, InfiniteGraph, Apache Giraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog.

cómo usar ordenar en c ++

Caso de uso

Esto se utiliza básicamente en detección de fraudes, motores de recomendación en tiempo real (en la mayoría de los casos de comercio electrónico), gestión de datos maestros (MDM), operaciones de red y TI, gestión de identidades y accesos (IAM), etc.

HBase y Cassandra son las dos famosas bases de datos orientadas a columnas. Entonces, ahora hablando a un nivel superior, comparemos y entendamos las diferencias arquitectónicas y de trabajo entre HBase y Cassandra.

Tutorial de HBase: HBase VS Cassandra

  • HBase se basa en BigTable (Google), mientras que Cassandra se basa en DynamoDB (Amazon) desarrollado inicialmente por Facebook.
  • HBase aprovecha la infraestructura de Hadoop (HDFS, ZooKeeper), mientras que Cassandra evolucionó por separado, pero puede combinar Hadoop y Cassandra según sus necesidades.
  • HBase tiene varios componentes que se comunican juntos como HBase HMaster, ZooKeeper, NameNode, Region Severs. Mientras que Cassandra es un tipo de nodo único, en el que todos los nodos son iguales y realiza todas las funciones. Cualquier nodo puede ser el coordinador, esto elimina el punto único de falla.
  • HBase está optimizado para lectura y admite escrituras únicas, lo que conduce a una coherencia estricta. HBase admite escaneos basados ​​en rango, lo que acelera el proceso de escaneo. Mientras que Cassandra admite lecturas de una sola fila, lo que mantiene la consistencia final.
  • Cassandra no admite escaneos de filas basados ​​en rango, lo que ralentiza el proceso de escaneo en comparación con HBase.
  • HBase admite la partición ordenada, en la que las filas de una familia de columnas se almacenan en el orden RowKey, mientras que en Casandra la partición ordenada es un desafío. Debido a la partición de RowKey, el proceso de escaneo es más rápido en HBase en comparación con Cassandra.
  • HBase no admite el equilibrio de carga de lectura, un servidor de región atiende la solicitud de lectura y las réplicas solo se utilizan en caso de falla. Mientras que Cassandra admite el equilibrio de carga de lectura y puede leer los mismos datos de varios nodos. Esto puede comprometer la consistencia.
  • En el teorema CAP (Consistencia, Disponibilidad y Partición-Tolerancia), HBase mantiene la Consistencia y Disponibilidad mientras que Cassandra se enfoca en Disponibilidad y Partición-Tolerancia.


Ahora, analicemos en profundidad y comprendamos las características de Apache HBase que lo hacen tan popular.

Tutorial de Apache HBase: características de HBase

  • Lectura y escritura atómica: A nivel de fila, HBase proporciona lectura y escritura atómicas. Se puede explicar como, durante un proceso de lectura o escritura, todos los demás procesos no pueden realizar operaciones de lectura o escritura.
  • Lecturas y escrituras consistentes: HBase proporciona lecturas y escrituras consistentes debido a la función anterior.
  • Escalabilidad lineal y modular: Dado que los conjuntos de datos se distribuyen a través de HDFS, son linealmente escalables en varios nodos, así como modularmente escalables, ya que se dividen en varios nodos.
  • Fragmentación automática y configurable de tablas: Las tablas de HBase se distribuyen en clústeres y estos clústeres se distribuyen en regiones. Estas regiones y clústeres se dividen y se redistribuyen a medida que aumentan los datos.
  • API de Java fácil de usar para el acceso de clientes: Proporciona una API de Java fácil de usar para el acceso mediante programación.
  • Pasarela de ahorro y servicios web REST-ful: También es compatible con Thrift y REST API para interfaces que no son de Java.
  • Bloques de filtros de caché y Bloom: HBase es compatible con Block Cache y Bloom Filters para la optimización de consultas de alto volumen.
  • Soporte automático de fallas: HBase con HDFS proporciona WAL (Write Ahead Log) en todos los clústeres, lo que brinda soporte automático ante fallas.
  • Claves de fila ordenadas: Como la búsqueda se realiza en un rango de filas, HBase almacena las claves de fila en un orden lexicográfico. Usando estas claves de fila ordenadas y la marca de tiempo, podemos crear una solicitud optimizada.

Ahora avanzando en este tutorial de HBase, déjame decirte cuáles son los casos de uso y los escenarios en los que se puede usar HBase y luego compararé HDFS y HBase.

Me gustaría llamar su atención sobre los escenarios en los que HBase es la mejor opción.

Tutorial de HBase: ¿Dónde podemos usar HBase?

  • Deberíamos usar HBase donde tenemos grandes conjuntos de datos (millones o miles de millones o filas y columnas) y requerimos acceso rápido, aleatorio y en tiempo real, de lectura y escritura sobre los datos.
  • Los conjuntos de datos se distribuyen en varios clústeres y necesitamos una alta escalabilidad para manejar los datos.
  • Los datos se recopilan de varias fuentes de datos y son datos semiestructurados o no estructurados o una combinación de todos. Podría manejarse fácilmente con HBase.
  • Quiere almacenar datos orientados a columnas.
  • Tiene muchas versiones de los conjuntos de datos y necesita almacenarlos todos.

Antes de pasar al estudio de caso de Facebook Messenger,déjame decirte cuáles son las diferencias entre HBase y HDFS.

Tutorial de HBase: HBase VS HDFS

HDFS es un sistema de archivos distribuido basado en Java que le permite almacenar grandes datos en varios nodos en un clúster de Hadoop. Por tanto, HDFS es un sistema de almacenamiento subyacente para almacenar los datos en el entorno distribuido. HDFS es un sistema de archivos, mientras que HBase es una base de datos (similar a NTFS y MySQL).

Como HDFS y HBase almacenan cualquier tipo de datos (es decir, estructurados, semiestructurados y no estructurados) en un entorno distribuido, veamos las diferencias entre el sistema de archivos HDFS y HBase, una base de datos NoSQL.

  • HBase proporciona acceso de baja latencia a pequeñas cantidades de datos dentro de grandes conjuntos de datos, mientras que HDFS proporciona operaciones de alta latencia.
  • HBase admite lectura y escritura aleatorias, mientras que HDFS admite WORM (escribir una vez, leer muchas o varias veces).
  • Se accede a HDFS básica o principalmente a través de trabajos de MapReduce, mientras que a HBase se accede a través de comandos de shell, API de Java, REST, Avro o API de Thrift.

HDFS almacena grandes conjuntos de datos en un entorno distribuido y aprovecha el procesamiento por lotes de esos datos. P.ej. ayudaría a un sitio web de comercio electrónico a almacenar millones de datos de clientes en un entorno distribuido que creció durante un largo período de tiempo (puede ser de 4 a 5 años o más). Luego, aprovecha el procesamiento por lotes sobre esos datos y analiza los comportamientos, patrones y requisitos del cliente. Luego, la empresa podría averiguar qué tipo de producto compra el cliente en qué meses. Ayuda a almacenar datos archivados y ejecutar el procesamiento por lotes sobre ellos.

Mientras que HBase almacena datos de una manera orientada a columnas donde cada columna se almacena junta para que la lectura sea más rápida aprovechando el procesamiento en tiempo real. P.ej. en un entorno de comercio electrónico similar, almacena millones de datos de productos. Entonces, si busca un producto entre millones de productos, optimiza el proceso de solicitud y búsqueda, produciendo el resultado de inmediato (o puede decirlo en tiempo real). El detallado Explicación arquitectónica de HBase , Lo cubriré en mi próximo blog.

Como sabemos, HBase se distribuye a través de HDFS, por lo que una combinación de ambos nos brinda una gran oportunidad de utilizar los beneficios de ambos, en una solución personalizada, como veremos en el siguiente estudio de caso de Facebook Messenger.

Tutorial de HBase: Estudio de caso de Facebook Messenger

Plataforma de mensajería de Facebook cambió de Apache Cassandra a HBase en noviembre de 2010.

Facebook Messenger combina mensajes, correo electrónico, chat y SMS en una conversación en tiempo real. Facebook estaba tratando de construir una infraestructura escalable y robusta para manejar un conjunto de estos servicios.

En ese momento, la infraestructura de mensajes manejaba más de 350 millones de usuarios que enviaban más de 15 mil millones de mensajes de persona a persona por mes. El servicio de chat admite más de 300 millones de usuarios que envían más de 120 mil millones de mensajes por mes.

Al monitorear el uso, descubrieron que surgieron dos patrones de datos generales:

cadena dividida múltiples delimitadores java
  • Un conjunto corto de datos temporales que tiende a ser volátil.
  • Un conjunto de datos en constante crecimiento al que rara vez se accede

Facebook quería encontrar una solución de almacenamiento para estos dos patrones de uso y comenzaron a investigar para encontrar un reemplazo para la infraestructura de mensajes existente.

A principios de 2008, utilizaron una base de datos de código abierto, es decir, Cassandra, que es una tienda de valor-clave de consistencia eventual que ya estaba en producción sirviendo tráfico para la búsqueda en la bandeja de entrada. Sus equipos tenían un gran conocimiento en el uso y la gestión de una base de datos MySQL, por lo que cambiar cualquiera de las tecnologías era una gran preocupación para ellos.

Pasaron algunas semanas probando diferentes frameworks, para evaluar los clústeres de MySQL, Apache Cassandra, Apache HBase y otros sistemas. Finalmente seleccionaron HBase.

Como MySQL no pudo manejar los grandes conjuntos de datos de manera eficiente, a medida que los índices y los conjuntos de datos crecieron, el rendimiento se deterioró. Encontraron a Cassandra incapaz de manejar un patrón difícil para reconciliar su nueva infraestructura de Mensajes.

Los principales problemas fueron:

  • Almacenamiento de grandes conjuntos de datos en continuo crecimiento de varios servicios de Facebook.
  • Requiere una base de datos que pueda aprovechar un alto procesamiento en ella.
  • Se necesita un alto rendimiento para atender millones de solicitudes.
  • Mantener la coherencia en el almacenamiento y el rendimiento.

Figura: Desafíos que enfrenta Facebook Messenger

Para todos estos problemas, Facebook ideó una solución, es decir, HBase. Facebook adoptó HBase para el servicio de mensajería, chat, correo electrónico, etc. de Facebook debido a sus diversas funciones.

HBase viene con muy buena escalabilidad y rendimiento para esta carga de trabajo con un modelo de consistencia más simple que Cassandra. Si bien encontraron que HBase era el más adecuado en términos de sus requisitos, como equilibrio automático de carga y conmutación por error, soporte de compresión, múltiples fragmentos por servidor, etc.

HDFS, que es el sistema de archivos subyacente utilizado por HBase, también les proporcionó varias características necesarias, como sumas de comprobación de extremo a extremo, replicación y reequilibrio automático de carga.

Figura: HBase como solución para Facebook Messenger

Cuando adoptaron HBase, también se centraron en devolver los resultados a HBase y empezaron a trabajar estrechamente con la comunidad de Apache.

Dado que los mensajes aceptan datos de diferentes fuentes, como SMS, chats y correos electrónicos, escribieron un servidor de aplicaciones para manejar toda la toma de decisiones para el mensaje de un usuario. Interactúa con una gran cantidad de otros servicios. Los archivos adjuntos se almacenan en un pajar (que funciona en HBase). También escribieron un servicio de detección de usuarios además de Apache ZooKeeper que habla con otros servicios de infraestructura para relaciones con amigos, verificación de cuentas de correo electrónico, decisiones de entrega y decisiones de privacidad.

El equipo de Facebook dedicó mucho tiempo a confirmar que cada uno de estos servicios es robusto, confiable y proporciona un buen rendimiento para manejar un sistema de mensajería en tiempo real.

Espero que este blog tutorial de HBase sea informativo y les haya gustado. En este blog, conoció los conceptos básicos de HBase y sus características.En mi próximo blog de , Estaré explicando el arquitectura de HBase y el funcionamiento de HBase, que lo hace popular para lectura / escritura rápida y aleatoria.

Ahora que ha entendido los conceptos básicos de HBase, consulte la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación de certificación de Edureka Big Data Hadoop ayuda a los alumnos a convertirse en expertos en HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume y Sqoop utilizando casos de uso en tiempo real en el dominio de comercio minorista, redes sociales, aviación, turismo y finanzas.

Tienes una pregunta para nosotros? Menciónalo en la sección de comentarios y nos comunicaremos contigo.