超级详细,且行文结构很好的文章
一条数据的HBase之旅,简明HBase入门教程-开篇
Hbase技术详细学习笔记
1、简介
Apache HBase是基于Hadoop构建的一个分布式的、可伸缩的海量数据存储系统,其底层用HDFS实现数据存储
。
1. HBase中的数据为何不直接存放于HDFS之上?
HBase中存储的海量数据记录
,通常在几百Bytes到KB级别
,如果将这些数据直接存储于HDFS之上,会导致大量的小文件产生
,为HDFS的元数据管理节点(NameNode)带来沉重的压力
。
HBase常被用来存放一些海量的(通常在TB级别以上)结构比较简单的数据,如历史订单记录,日志数据,监控Metris数据等等,HBase提供了简单的基于Key值的快速查询能力。
NoSQL领域,数据表的模样却往往换成了另外一种"画风",这些"杂乱无章"的列所构成的多行数据,被称之为一个"稀疏矩阵",而上图中的每一个"黑块块",在HBase中称之为一个KeyValue。
2、适用场景
1. 什么样的数据适合用HBase来存储?
HBase的数据模型比较简单,数据按照RowKey排序存放,适合HBase存储的数据,可以简单总结如下:
以实体为中心的数据
实体可以包括但不限于如下几种:描述这些实体的,可以有基础属性信息、实体关系(图数据)、所发生的事件(如交易记录、车辆轨迹点)等等。- 自然人/账户/手机号/车辆相关数据
- 用户画像数据(含标签类数据)
- 图数据(关系类数据)
以事件为中心的数据
- 监控数据
- 时序数据
- 实时位置类数据
- 消息/日志类数据
上面所描述的这些数据,有的是结构化数据,有的是半结构化或非结构化数据。
HBase的“稀疏矩阵”设计,使其应对非结构化数据存储时能够得心应手,但在我们的实际用户场景中,结构化数据存储依然占据了比较重的比例。
2. 既然HBase也是一个数据库,能否用它将现有系统中昂贵的Oracle替换掉?
HBase擅长于存储结构简单
的海量数据
但索引能力有限
,而Oracle等传统关系型数据库(RDBMS)能够提供丰富的查询能力
,但却疲于应对TB级别
的海量数据存储
,HBase对传统的RDBMS并不是取代关系,而是一种补充。