hbase
由来:
hbase是谷歌三大论文bigtable的实现
谷歌三大论文:gfs、mapreduce、bigtable
简介:
1.是hadoop的数据库,是一个典型的Nosql,而且是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
2.hdfs是hbase的文件存储系统
3.mapreduce用来处理hbase的海量数据
4.zookeeper作为器分布式协同服务
5.主要用来存储非结构化和半结构化的松散数据
核心三部分:
1.Rowkey:键
2.列族:值
3.时间戳:版本
按照rowkey字典(ASCII)顺序存储,基于rowkey的高效检索,同时继承hdfs的吞吐能力
热点问题:
概念:
- 假如说一个master有多个regionServer;由于hbase存储的数据是按照rowkey的ASCII排序,所以如果rowkey的前几位是一样的,会被集中存储在某一个regionServer上,其它的regionServer上就没有数据存储,就导致了分配不均;
散列的概念:
- 由于数据是被按照rowkey的字典排序存储的,若rowkey循序性较强,就会减弱hbase分布式存储的特点,千万数据热点,在高并发数据读写时,会千万部分region过载,严重时会千万节点失配,影响其它数据的访问(其中一个region特别忙,另一个region特别闲)
散列方案:
- Hash:可以让数据均匀分配,可重构,可以使用get等方法快速访问数据
- 加随机数:数据会均匀分配,但不可以重构,也会失去get快速定位数据的能力
- 反转:普遍使用第三种方法,尤其是对于时间序列,手机号类似的rowkey
体系架构: