HBase | |
---|---|
Tipo de | software libre y de código abierto y sistema de gestión de bases de datos |
Desarrollador | Fundación de software Apache |
Escrito en | Java [3] [2] |
Sistema operativo | multiplataforma |
Primera edición | 2006 [1] y 14 de abril de 2012 [2] |
plataforma de hardware | máquina virtual de Java |
ultima versión |
|
candidato de lanzamiento |
|
Licencia | Licencia Apache 2.0 [4] |
Sitio web | hbase.apache.org _ |
HBase es un DBMS NoSQL de código abierto , un proyecto del ecosistema Hadoop . Escrito en Java ; pertenece a la categoría de "familia de columnas" , muchas soluciones técnicas se adoptan de Google BigTable . Se ejecuta sobre el sistema de archivos distribuido HDFS y proporciona capacidades similares a las de BigTable para Hadoop, es decir, proporciona una forma tolerante a fallas para almacenar grandes cantidades de datos dispersos.
El soporte de compresión, las operaciones en memoria y el filtro Bloom para cada columna subyacente se implementan de acuerdo con la documentación de BigTable [5] . Las tablas en HBase pueden servir como entrada y salida al funcionamiento de la implementación de MapReduce en el proyecto Hadoop, y pueden obtenerse no solo a través de la API de Java, sino también a través de la API ( REST , Avro , Thrift ). Los proyectos Phoenix y Trafodion brindan acceso SQL a datos controlados por HBase.
Se utiliza para administrar datos en varios proyectos grandes [6] [7] , en particular, Facebook usó HBase para la plataforma de mensajería [8] en el período 2010-2018 (en 2018 la plataforma se transfirió a MyRocks [9] ), a los usuarios leales también se incluyen Adobe , StumbleUpon , Twitter , Yahoo! (opera un clúster HBase de 3000 nodos [10] ).
El proyecto HBase fue iniciado en 2006 por Chad Walters y Jim Kellerman de Powerset, que necesitaba procesar grandes cantidades de datos para crear un motor de búsqueda de lenguaje natural. El prototipo se basó en un artículo de Google publicado en 2005 sobre el sistema Bigtable [11] . En febrero de 2007, Mike Cafarella escribió un código auxiliar para el sistema, que fue desarrollado por Jim Kellerman. El proyecto pronto atrajo mucha atención de los desarrolladores y recibió una alta prioridad en la fundación Apache [12] .
La primera versión de HBase se envió con Hadoop 0.15.0 en octubre de 2007. En mayo de 2010, el sistema pasó de la categoría de subproyecto Hadoop a la categoría de proyecto de nivel superior de Apache Foundation . Desde 2012 se lleva a cabo una conferencia anual de desarrolladores y usuarios del sistema HBaseCon.
En 2015, se lanzó la versión 1.0 del sistema, que tanto el fondo como los observadores independientes señalaron como un “hito”, que indicaba la madurez del producto [10] ; Desde la segunda mitad de la década de 2010, el interés por el sistema también ha crecido debido a la aparición de interfaces SQL para el mismo (Phoenix, Trafodion).
Las aplicaciones almacenan datos en tablas formadas por filas y columnas. Las celdas de la tabla (cruces de filas y columnas) están controladas por versión. La versión predeterminada es la marca de tiempo asignada automáticamente por HBase en el momento de la inserción. El contenido de la celda es una matriz de bytes no interpretada .
Las claves de fila de la tabla también son matrices de bytes, por lo que, en teoría, una clave de fila puede ser cualquier cosa, desde cadenas hasta representaciones binarias de estructuras de datos largas e incluso serializadas . Las filas de la tabla se ordenan por clave de fila (la clave principal de la tabla). La clasificación se realiza en orden de bytes. Todos los accesos a la tabla se basan en la clave principal. Las columnas se agrupan en familias de columnas. Todos los miembros de una familia de columnas comparten un prefijo común, por ejemplo, las columnas temperature:airy temperature:dew_pointpertenecen a la familia temperaturey station:identifierpertenecen a la familia station. El prefijo de la familia de columnas debe ser caracteres imprimibles. La parte final (calificador) puede consistir en bytes arbitrarios.
Las familias de columnas de la tabla deben estar predefinidas como parte de la definición del esquema de la tabla, pero se pueden agregar nuevos miembros de la familia según sea necesario. station:addressPor ejemplo, se puede pasar una nueva columna al cliente como parte de una actualización y su valor se almacenará correctamente, suponiendo que la familia de columnas stationya exista en la tabla. Físicamente, todos los miembros de las familias de columnas se almacenan juntos en el sistema de archivos . Debido a que la configuración y las especificaciones se establecen en el nivel de la familia de columnas, es deseable que todos los miembros de la familia tengan patrones de acceso y características de tamaño similares.
HBase divide automáticamente las tablas horizontalmente en las denominadas regiones . Cada región forma un subconjunto de filas de la tabla. Una región se define por la tabla a la que pertenece, su primera fila (inclusive) y su última fila (no incluida). Inicialmente, la tabla consta de una sola región, pero a medida que la región crece más allá de un umbral de tamaño configurable, se divide en dos nuevas regiones de aproximadamente el mismo tamaño. Hasta la primera partición, toda la carga de datos se realizará en el mismo servidor que aloja la región de origen. A medida que crece la tabla, aumenta el número de sus regiones. Las regiones son unidades asignadas en un clúster HBase. Si una tabla es demasiado grande para un solo servidor, puede ser atendida por un clúster de servidores con cada nodo alojando un subconjunto de las regiones de la tabla. Además, las regiones proporcionan equilibrio de carga en la tabla. El conjunto de regiones ordenadas disponibles en la red forma el contenido total de la tabla.
Fundación de software Apache | |||||||
---|---|---|---|---|---|---|---|
Proyectos de primer nivel |
| ||||||
Subproyectos |
| ||||||
Web de Apache |
| ||||||
Otros proyectos | |||||||
Desarrollando proyectos ( Incubadora ) |
| ||||||
Proyectos fuera de servicio ( Ático ) | |||||||
|