官网
Apache HBase -- Apache HBase™ Home
阿里云hbase
基本概念
HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可以提供实时计算和分布式访问。HBase的数据模型是稀疏排序映射表,其中键由行关键字、列关键字和时间戳构成。HBase的目标是存储并处理大型数据、支持对大规模数据的随机和实时读写访问。即使在普通的硬件配置上,HBase也能够处理上亿的行和几百万的列所组成的超大型数据库。
Hadoop
Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是专为离线和大规模数据分析而设计的。Hadoop通常被用于处理半结构化和非结构化数据,相比关系型数据库,它在处理这些类型的数据时具有更好的性能和灵活性。Hadoop的核心设计是HDFS和MapReduce。HDFS提供了在集群服务器上分布式存储文件的能力,而MapReduce提供了在集群服务器上分布式处理数据的能力。因此,Hadoop非常适合处理海量数据。
HDFS和MapReduce
HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。MapReduce为分布式计算框架,包含map(映射)和reduce(归约)过程,负责在HDFS上进行计算。
稀疏排序映射表
HBase的稀疏排序映射表是一种数据模型,它类似于BigTable的数据模型。在HBase中,数据以键值对的形式存储,并且这些键值对按照键的顺序进行排列和存储。这种数据模型是稀疏的,因为并不是所有的列都会在每个行中出现,也就是说,每个行可以具有不同的列。同时,这种数据模型也是排序的,因为键值对按照键进行排序。这种数据模型使得HBase能够高效地处理大量的数据,并且能够快速地执行随机读写操作。
每个值是一个未经解释的字符串,没有数据类型
表中存储数据,每一行都有一个可排序的行键和任意多的列
表:HBase采用表来组织数据,表是由行和列组成的,列划分为若干个列族
行:每个HBase表都由若干行组成,每个行由行键(row key)来标识
列族:一个HBase表备份组成许多"列族"(Column Family)的集合,他是基本的访问控制单元
列限定符:列族里的数据通过列限定符(或例)来定位
单元格:在HBase表中,通过行、列族和列限定符确定一个"单元格"(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]
时间戳:每个单元格都保存着一份数据的多个版本,这些版本采用时间戳进行索引
HBase使用场景
HBase的使用场景包括以下几种:
- 平台类:HBase可以作为数据存储,捕获来自于各种数据源的增量数据。这种场景下存放的往往是平台的数据,有时候甚至是无业务含义的,作为平台的底层存储使用。
- 内容服务类:这类主要面向各种业务系统,将数据直接存放到HBase中,再读取。这种场景需要支持千万级别的并发访问及读取,并需要解决服务质量的问题。这种应用场景通常业务简单,不需要关系型数据库中的很多特性。
- 信息展示类:通过HBase的高存储,高吞吐等特性,可以将人们感兴趣的信息快速展现出来,例如阿里巴巴的天猫双十一大屏。
此外,对于需要存储大量结构化或非结构化数据,数据量越来越大,传统数据库无法满足需求的情况,HBase也是一个很好的选择。
HBase的使用原因
HBase的使用原因主要有以下几点:
- HBase是一个构建在HDFS上的分布式列存储系统,具有高可靠、高性能、分布式和面向列的动态模式等优点。
- HBase基于Google BigTable模型开发,具有典型的key/value系统特点,能够提供大规模数据的随机、实时读写访问。
- HBase目标主要依靠横向扩展,通过不断增加廉价的商用服务器,来增加计算和存储能力。
- HBase与传统数据库相比,具有线性扩展、数据存储在HDFS上、备份机制健全和通过zookeeper协调查找数据等优势,能够解决传统数据库面临的问题,例如数据量很大的时候无法存储、没有很好的备份机制、数据达到一定数量开始缓慢等。
因此,HBase是一个适合于处理大量结构化或非结构化数据,且需要高可靠、高性能、分布式和动态模式的数据库系统
HBase的同类产品列举
HBase的同类型产品包括以下几种:
- CouchDB:一个开源的面向文档的数据库系统,采用Erlang语言编写,与HBase类似,也支持面向列的存储和二级索引。
- Cassandra:一个开源的、高度可分布的、面向列的数据库系统,最初由Facebook开发,用于处理实时数据。
- Hypertable:一个开源的、高性能的、面向列的数据库系统,采用C++语言编写,与HBase类似,适用于大规模数据存储和实时数据处理。
- Accumulo:一个开源的、可分布的、面向列的键值存储系统,由美国国家安全局(NSA)开发,具有高度安全性和高性能。
这些产品与HBase在某些方面具有相似之处,如面向列的存储、高性能、分布式等,但各自也有其独特的特点和适用场景。
Hbase同类型产品特性与Hbase对比-技术选型帮助
与CouchDB相比,HBase在数据模型和查询语言方面有所不同。HBase是基于列的存储,而CouchDB是基于文档的存储,支持更丰富的数据结构。此外,HBase的查询语言相对简单,而CouchDB具有更强大的查询功能。
与Cassandra相比,HBase和Cassandra都是面向列的数据库系统,但它们在数据模型、查询语言和性能方面有所不同。HBase支持随机访问和实时读取,而Cassandra更适合于大量数据的批处理。此外,HBase支持二级索引,而Cassandra具有自己的索引机制。
与Hypertable相比,HBase和Hypertable都是面向列的数据库系统,但它们在实现语言、性能和扩展性方面有所不同。Hypertable采用C++语言编写,而HBase采用Java语言编写。此外,Hypertable在性能和扩展性方面可能具有优势,适用于大规模数据存储和实时数据处理。
与Accumulo相比,HBase和Accumulo都是面向列的键值存储系统,但它们在实现语言、数据模型和安全性方面有所不同。Accumulo采用C++语言编写,而HBase采用Java语言编写。此外,Accumulo具有更高的安全性,由美国国家安全局开发,适用于高度安全性的应用场景。
综上所述,HBase和同类型产品在数据模型、性能、扩展性、数据一致性、数据存储和处理等方面有所不同,需要根据具体的业务需求进行评估和选择。
Hbase版本更新以及特性
HBase是一个分布式、可扩展的、面向列的数据库系统,是Apache Hadoop生态系统的一部分。随着Hadoop和Hadoop生态系统的不断发展,HBase也在不断更新和改进。
以下是一些HBase版本的主要更新和特性:
- HBase 0.98.0:这个版本引入了一种新的API,即HBase Shell,以及一些新的表选项。此外,这个版本还改进了性能和稳定性,包括对大表的支持和对二级索引的改进。
- HBase 1.0:这个版本引入了一种新的数据模型,即面向列的存储。此外,该版本还提供了新的API、改进的性能和稳定性、更好的大表支持以及对非关系型数据的支持。
- HBase 2.0:这个版本引入了全局版本控制的特性,允许在整个表中设置版本号。此外,该版本还增加了对ACID事务的支持、改进的湖到货(Lake-to-Lake Solution)集成以及对多租户的支持。
- HBase 2.1:这个版本主要解决了在HBase 2.0版本中引入的ACID事务的问题,并进一步提高了性能和稳定性。
- HBase 2.2:这个版本增加了对轻量级事务的支持、改进的数据管理能力以及对HBase经济学仪表板(HBase Economy Dashboard)的支持。
- HBase 2.3:这个版本引入了一种新的存储格式,即HFilev5,以及一些新的特性,如数据块压缩、时间戳增量和虚拟列族。
- HBase 3.0:这个版本主要改进了性能和稳定性,并增加了一些新的特性,如全局读一致性、对压缩和加密的改进以及对本地客户端(Native Client)的支持。
这些更新和特性反映了HBase不断发展和改进的过程,也为用户提供了更好的性能、稳定性和功能。