今天我们来继续介绍Apache顶级项目大数据三巨头之一的HBase。恰逢今天(5.24)是HBase Con2016旧金山盛会,比较应景,而且还有朋友@Luke Han去演讲Kylin。
1. 官网简介:
老样子,HBase官网的介绍, "HBase is the Hadoop database, a distributed, scalable, big data store.",所以HBase = Hadoop Database,并且提供了分布式可扩展的数据存储。(HBase的官网直接差评,像API文档,唯一亮点是有部分中文文档)
我们之前的系列提到过,HBase是源自2006年OSDI的Google论文BigTable,
Chad Walters和Jim受其启发于2007年即实现了HBase. 类似Google BigTable使用GFS作为文件存储系统,HBase利用Hadoop的HDFS作为其文件系统;Google用MapReduce来处理bigtable中的海量数据,HBase用Hadoopd的MapReduce来处理;同样Google使用Chubby作为协同服务,HBase采用Zookeeper。大家是不是感慨山寨的威力啊?就差Made in China?
2. HBase功能及作用
HBase有什么功能作用呢?同样我们回顾一下当年Google为什么会研发BigTable吧。Google当年面临一个大的挑战,如何能实时搜索互联网内容?它的方案是需要把互联网内容缓存,并基于海量的缓存上提供快速实时查询。所以有了:
-
GFS : 解决分布式,可扩展的文件存储系统。
-
BigTable: 分布式存储,管理PB级别结构化数据并提供实时查询。
-
MapReduce: 处理分布式计算。
好吧官网给出如下建议,HBase作为大型分布式数据库,更像是一个Data Store多于Data Base。却少很多RDBMS重要特性如列类型,触发器,高级查询语言,高级事务等。请确信有足够数据,如达上亿或者上千亿行以上数据,或者上百万列;如果只有几百万行则RDBMS更加。
另外HBase是一个面向列的数据库。大概解释一些列式数据库吧。
行式数据库把一行中所有数据串在一起存储;Row-based storages stores a table in a sequence of rows. 列式则把一列数据串在一起存储,如我们熟悉的Sybase IQ;
上图: