HBase

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] ).

Historia

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).

Modelos de datos

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.

Regiones

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.

Notas

  1. http://hbase.apache.org/book/hbase.history.html
  2. 1 2 https://projects.apache.org/json/projects/hbase.json
  3. El proyecto de código abierto hbase en Open Hub: página de idiomas - 2006.
  4. http://hbase.apache.org/license.html
  5. Chang, et al. (2006). Bigtable: un sistema de almacenamiento distribuido para datos estructurados
  6. Desarrollado por HBase (enlace descendente) . Fecha de acceso: 12 de enero de 2012. Archivado desde el original el 27 de marzo de 2013. 
  7. Presentación de StumbleUpon HBase . Fecha de acceso: 12 de enero de 2012. Archivado desde el original el 21 de octubre de 2013.
  8. La tecnología subyacente de los mensajes . Fecha de acceso: 12 de enero de 2012. Archivado desde el original el 6 de diciembre de 2014.
  9. Xiang Li, Thomas Georgiou. Migración del almacenamiento de Messenger para optimizar el rendimiento . Facebook (26 de junio de 2018). Consultado el 3 de enero de 2019. Archivado desde el original el 11 de noviembre de 2018.
  10. 12Gavin Clarke . Apache finalmente cierra la base de datos de Hadoop... después de 7 años de desarrollo . HBase 1.0 una 'cosa de belleza colaborativa' . El Registro (24 de febrero de 2015) . Consultado el 3 de enero de 2019. Archivado desde el original el 4 de enero de 2019.
  11. Copia archivada . Consultado el 18 de enero de 2010. Archivado desde el original el 3 de enero de 2010.
  12. Blog de Powerset Archivado el 19 de febrero de 2013.

Enlaces