HBase基础总结:
1、什么是hbase: 是面向列,高可靠,高性能,可伸缩的分布式存储数据库
2、什么是列式存储:hbase可以看作一个大的HashMap,存取格式是由key-value的形式。四维定位到一个单元格 cell单元格(逻辑上的概念)
3、hbase的架构:
:
主节点:HMaster负责与zookeeper以及与RegionServer保持心跳机制,维护整个集群的健康;
合理的分配每一个regionsever上的region个数,保持负载均衡的状态。
从节点:RegionServer,负责维护并管理自己的Region
Store:列簇,都有一个memstore(基于内存的,数据会先写入到这里),
当memstore达到100M的时候放入到blockcache中,当blockcache中的memstore达到85%的时候,触发flush机制,将数据写入(stroefile--->Hfile文件)到HDFS中。
4、搭建
5、hbase shell put '表名','行键','列簇:列名','列值'(每一列多需要有一个put对象添加)
scan:每一次获取一批数据
6、过滤器:
比较过滤器:(注意:过滤器中需要传入两个参数,分别是操作符和比较器)
比较器:二进制比较器,二进制前缀比较器,包含比较比较器,前缀比较器,正则比较器
行键过滤器:
列簇过滤器:
列名过滤器:
列值过滤器:
专用过滤器:
单列值过滤器:
分页过滤器:
包装过滤器:
多级过滤器查询:
FilterList
布隆过滤器:减少查询的数据量。NONE,ROW,ROWCOL
7、架构、读写流程
读:
1、客户端先于zookeeper发起请求建立连接(RPC的方式),获取hbase:meta表的位置(meta表也是存储在HDFS中)
2、去对应的RegionServer中找到该meta表
scan: 获取到的多个RS的地址
4、去对应的RegionServer中找数据
再去HFile中找,。。。。
写:
1、客户端先于zookeeper发起请求建立连接(RPC的方式),获取hbase:meta表的位置(meta表也是存储在HDFS中)
2、去对应的RegionServer中找到该meta表
3、根据meta表的内容找到所需Region所在的RegionServer的位置。
4、与对应的RegionServer建立连接,开始传输数据
5、先写入到WAL中,再往memstore中写,当memstore写满后,当memstore达到100M的时候放入到blockcache中,当blockcache中的memstore达到85%的时候,触发flush机制,将数据写入 (stroefile--->Hfile文件)到HDFS中。
(注意:一个HFile文件被一个Region所管理)
8、分裂机制:1.4.61282M1282M 2.0之后:256M-----10G
9、什么是Hbase的热点问题: 如何解决:建表的时候,进行预分区(设置切割点(针对rowkey来说的))
10、为什么Hbase在海量数据中查询数据非常快?
机械磁盘:0.1s
配合布隆过滤器,内存缓冲机制,速度更快。