HBase基础总结:
1、什么是hbase: 是面向列,高可靠,高性能,可伸缩的分布式存储数据库
2、什么是列式存储:hbase可以看作一个大的HashMap,存取格式是由key-value的形式。四维定位到一个单元格 rowkey,列簇,列名,时间戳---->列值 cell单元格(逻辑上的概念)
3、hbase的架构:
主从架构 :
主节点:HMaster负责与zookeeper以及与RegionServer保持心跳机制,维护整个集群的健康;
合理的分配每一个regionsever上的region个数,保持负载均衡的状态。
从节点:RegionServer,负责维护并管理自己的Region
Region:是数据文件的切片,横向切片的。一个Region中由多个Store(列簇) Store:列簇,都有一个memstore(基于内存的,数据会先写入到这里),
当memstore达到100M的时候放入到blockcache中,当blockcache中的memstore达到85%的时候,触发flush机制,将数据写入(stroefile--->Hfile文件)到HDFS中。
4、搭建
5、hbase shell DML create '表名','列簇名',...(表的必要选项是表名和列簇,可以没有列名) DDL put '表名','行键','列簇:列名','列值'(每一列多需要有一个put对象添加)
get :每一次获取一条数据 scan:每一次获取一批数据
6、过滤器:
比较过滤器:(注意:过滤器中需要传入两个参数,分别是操作符和比较器)
比较器:二进制比较器,二进制前缀比较器,包含比较比较器,前缀比较器,正则比较器
行键过滤器:
列簇过滤器:
列名过滤器:
列值过滤器:
专用过滤器:
单列值过滤器:
分页过滤器:
包装过滤器:
WhileMatchFilter 多级过滤器查询:
FilterList
布隆过滤器:减少查询的数据量。NONE,ROW,ROWCOL
7、架构、读写流程
读:
1、客户端先于zookeeper发起请求建立连接(RPC的方式),获取hbase:meta表的位置(meta表也是存储在HDFS中)
2、去对应的RegionServer中找到该meta表
3、根据meta表的内容找到所需数据所在的RegionServer的位置。 get: 获取到的是一个RS的地址 scan: 获取到的多个RS的地址
4、去对应的RegionServer中找数据
5、先去memstore中查找,如果找到就返回 再去blockcache中找,。。。。 再去storefile中找,。。。 再去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.6 0.94之前:可以手动调节阈值:hbase.hregion.max.filesize 0.94--2.0之前: 当前regionserver中的region个数^31282M 第一次分裂的阈值:1^31282M ...最后当分裂第四的时候:固定值,10G 2.0之后:256M-----10G
9、什么是Hbase的热点问题: 当插入数据的时候,大量的数据都会往一个RegionServer中插入数据,导致该RegionServer的压力过大,其他节点没有交互。 如何解决:建表的时候,进行预分区(设置切割点(针对rowkey来说的))
10、为什么Hbase在海量数据中查询数据非常快?
10T--->2G--->500M--->250M--->10M 机械磁盘:0.1s
固态硬盘:0.01s 配合布隆过滤器,内存缓冲机制,速度更快。
标签:总结,基础,---,RegionServer,meta,memstore,过滤器,Hbase,hbase From: https://www.cnblogs.com/slm-1314521/p/16705650.html