-
1.HBase简单读写流程
读:
客户端先访问zk集群,元数据(meta),通过元数据找到要读取数据的region所在的RegionServer,然后按照以下顺序进行读取:先去BlockCache读取,若BlockCache没有,则到Memstore读取,若MemStore中没有,则到HFile中读取。
写:写比读要快
找到要写入数据的region所在的RegionServer,然后将数据先写到WAL(hlog)中,然后再将数据写到MemStore等待刷新,回复客户端写入完成。
-
2.HBase和Hive的对比
-
3.Hbase region切分过程?
1.首先regionserver在父region下创建切分目录,当创建成功后关闭该region
2.在切分目录下创建两个子region目录以及引用文件,每个引用文件指向原region的一半记录。如果这个过程成功,则将两个子region移动表目录下,更新meta表
3.开启多个线程异步将原始数据真正的写成两半,取代引用文件。
4.当切分完成后,原来region被删除。master收到这次切分的通知会根据regionserver负载情况是否region迁移。
-
4.Hbase合并过程
memstore 的flush操作会逐渐增加磁盘上的文件数,会将这些文件合并更大文件,当最大文件超过阀值,就进行region切分。
合并分为大合并和小合并
小合并是将小文件合并更大的文件。
大合并会将所有文件合并成一个。
-
5.介绍Hbase过滤器
1.列值过滤器(),2.rowkey过滤器3.键值过滤器,4.功能过滤 5.布隆过滤器
-
6.介绍Hbase计数器?
分为单列计数器与多列计数器,本质上计数器是列,有自己的列族和列名。
-
7.Hbase 接收数据,短时间大量导入会被锁,如何处理?
默认Hbase的autoflush是开启的,这样当客户端每put一条数据立即发送到服务器。通过调用setautoflush设置false。可以把flush功能关闭。这样可以批量写入到hbase中。而不是put执行一次更新一次。只有客户端缓存满了再向服务器发送请求。
-
8.Hbase中的compact用途是什么,什么时候触发,分为哪两种,有什么区别?
在hbase中每当memstore数据flush到磁盘之后,就形成一个storefile.当storefile数量达到一定程度后,就compaction操作。
compact作用
1.合并文件
2.清除过期,多余版本
hbase 实现两种compaction方式两种 minor and major
minor 是用来做部分文件的合并,major是对region下的hstore下的所有storefile进行合并。
-
9.Write Ahead Log (WAL)
提供了一种高并发、持久化的日志保存与回放机制。每一个业务数据的写入操作(PUT / DELETE)执行前,都会记账在WAL中.WAL日志为何共享一个而不是每个region一个?
因为每个region都是一个的话,则regionsever下很多region会有多个日志。这样会影响效率和扩展性。