hbase原理

Hbase:
基于hdfs的数据库,来源于google的一篇论文bigtable.基于HDFS实现高可用、分布式、列式存储、核心包括:
-Rowkey: 可以简单理解成mysql中的主键
-列簇,列
-时间戳
按照Rowkey字典顺序存储,基于rowkey的高效检索,同时继承hdfs的高吞吐能力。
Hbase用rowkey快速访问数据,所以rowkey的设计是hbase性能提升的关键
Hbase数据访问方式:
-通过get方式,指定rowkey获得唯一一条记录
-通过scan方式,设置startRow和stopROW参数进行范围匹配。
-全表扫描。

hbase rowkey设计原则:
-rowkey长度
rowkey快速定位过程中,rowkey数据是在内存中的,所以rowkey过长时,如果数据量又很大,会导致内存占用过多,检索变慢。
hbase本身对rowkey限制64Kb,但建议越短越好,最好16字节以内;另外colname(列簇名)对设计也尽量简单。
-rowkey唯一性
rowkey需要能够唯一标识一条记录,类似RDBMS中的主键
-rowkey散列
由于数据是按rowkey的字典顺序存储的,若rokey顺序性较强,会减弱hbase分布
式存储的特点,在大数据量时会导致
部分region过载,严重时会造成节点失
联,影响其它数据的访问。
散列的方案:
1/ hash:可以让数据均衡分布,可重构,可以使用get等方式快速访问数据。 比如你设置的rowkey组合完了做hash
2/ 加随机数:数据均衡分布,不可重构,失去get快速定位数据等能力
3/ 反转:普遍使用的三列方法,尤其是对于时间序列,手机号类似的rowkey

二级索引(待看)

设计时hbase的存储空间是需要考虑的:
比如2个G的mysql数据,由于hdfs本身机制,就成6个G。
而hbase还有副本,6个副本的话,就36G。

如遇到写入慢的问题:
1/ 检查hdfs,检查rowkey的长度等。

优势:
上亿条数据的查询很快的

使用场景:
用户画像的场景:可以用hbase也可以用ES
ES除了做ELK,日常业务状态监控,业务日志的采集分析外。
也可以做为olap的引擎。

posted on 2020-01-25 15:05  锋锋2019  阅读(193)  评论(0编辑  收藏  举报

导航