![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hbase
qq_42506914
这个作者很懒,什么都没留下…
展开
-
1、Hbase读流程
1)Client先访问Zookeeper,读取meta表所在region的位置,然后读取meta表中的数据。meta中存储了用户表的region信息; 2)根据namespace、表名和rowkey在meta表中找到对应的region信息; 3)将region位置信息存储在客户端缓存中(cache) 4)找到这个region对应的regionserver; 5)查找对...原创 2019-03-19 16:03:10 · 218 阅读 · 0 评论 -
2、Hbase写流程
1)Client向HregionServer发送写请求; 2)HregionServer将数据写到HLog(write ahead log)。为了数据的持久化和恢复; 3)HregionServer将数据写到内存(MemStore); 4)将WAL数据落盘(同步到HDFS); 5)如果在同步WAL到HDFS过程中发生异常,则MemStore中的数据会删除(rollBack); ...原创 2019-03-19 16:14:21 · 77 阅读 · 0 评论 -
3、数据flush过程
Flush 操作是 Region 级别的,如果触发,是region一起刷,不是store刷自己的 条件: 1.(hbase.regionserver.global.memstore.size)默认;堆大小的40% regionServer的全局memstore的大小,超过该大小会触发flush到磁盘的操作,默认是堆大小的40%,而且regionserver级别的flush会阻塞客户端读写 ...原创 2019-03-19 16:20:26 · 439 阅读 · 0 评论 -
4、数据合并
1)当数据文件达到一定个数,Hmaster触发合并操作,Region将数据块加载到本地,进行合并; hbase.hregion.majorcompaction=604800000(7天) hbase.hstore.compactionThreshold=3 2)当合并的数据超过一定的大小,进行拆分,将拆分后的Region分配给不同的HregionServer管理; 3)同时将Hreg...原创 2019-03-19 16:23:17 · 158 阅读 · 0 评论 -
5、Hbase数据的增删改查
Hbase基于持久化HDFS要么是新增,要么是整个删除,不嫩修改的系统,那么是怎么做增删改查的呢,真是情况是,Hbase都是做新增操作。 那么真正删除数据是发生在哪里? 情况一: 数据写入到缓存里面,还没有flush到Hfile,那么flush到Hfile的时候数据就不会写出去,但是墓碑记录那一条数据还会在;在compact的时候会删除。 情况二:如果数据已经flush到了Hfil...原创 2019-03-19 16:53:09 · 261 阅读 · 0 评论 -
6、region的拆分,和预分区
一个region就是表一段RowKey的集合,当Region太大的时候Hbase会拆分它; 因为某个Region太大的时候读取效率太低了。查询的本质是遍历key,当数据量太大的时候,遍历一遍的时间实在是太长了,为了提高效率,Hbase会拆分Region。 自动拆分 对于切分点是如何让定位呢 region切分策略会触发region切分,切分开始之后的第一件事...原创 2019-03-19 19:11:22 · 986 阅读 · 0 评论 -
为什么不能有过多的列簇
我们知道,一张 HBase 表包含一个或多个列族。HBase 的官方文档中关于 HBase 表的列族的个数有两处描述:A typical schema has between 1 and 3 column families per table. HBase tables should not be designed to mimic RDBMS tables. 以及 HBase currently...转载 2019-03-19 19:32:51 · 402 阅读 · 0 评论