大数据技术之HBase原理分析

大数据技术之HBase原理分析,第1张

1)Client向HregionServer发送写请求;

2)HregionServer将数据写到HLog(write ahead log)。为了数据的持久化和恢复;

3)HregionServer将数据写到内存(MemStore);

4)反馈Client写成功。

1)当MemStore数据达到阈值(默认是128M,老版本是64M),将数据刷到硬盘,将内存中的数据删除,同时删除HLog中的 历史 数据;

2)并将数据存储到HDFS中;

3)在HLog中做标记点。

1)当数据块达到4块,Hmaster将数据块加载到本地,进行合并;

2)当合并的数据超过256M,进行拆分,将拆分后的Region分配给不同的HregionServer管理;

3)当HregionServer宕机后,将HregionServer上的hlog拆分,然后分配给不同的HregionServer加载,修改META;

4)注意:HLog会同步到HDFS。

1)Client先访问zookeeper,从meta表读取region的位置,然后读取meta表中的数据。meta中又存储了用户表的region信息;

2)根据namespace、表名和rowkey在meta表中找到对应的region信息;

3)找到这个region对应的regionserver;

4)查找对应的region;

5)先从MemStore找数据,如果没有,再到StoreFile上读(为了读取的效率)。

1)管理用户对Table的增、删、改、查 *** 作;

2)记录region在哪台Hregion server上;

3)在Region Split后,负责新Region的分配;

4)新机器加入时,管理HRegion Server的负载均衡,调整Region分布;

5)在HRegion Server宕机后,负责失效HRegion Server 上的Regions迁移。

1)HRegion Server主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBASE中最核心的模块。

2)HRegion Server管理了很多table的分区,也就是region。

1)HBASE Client使用HBASE的RPC机制与HMaster和RegionServer进行通信

2)管理类 *** 作:Client与HMaster进行RPC;

3)数据读写类 *** 作:Client与HRegionServer进行RPC。

文章转载链接:>

一、概述

二、图解

三、扩展

1、为什么不把META表信息直接保存在ZK中?

ZK中不宜保存大量数据,而META表主要是保存Region和RegionServer的映射信息,Region的数量没有具体约束,只要在内存允许的范围内,Region数量可以有很多,如果保存在ZK中,ZK的压力会很大。通过一个ROOT-表来转存到RegionServer中是一个比较理想的方案,相比直接保存在ZK中,也就多了一层-ROOT-表的查询,对性能来说影响不大。

2、每次访问都需要走ZK –> -ROOT- —> META的流程么?

不需要,Client端有缓存,第一次查询到相应region所在RS后,这个信息将被缓存到Client端,以后每次访问都直接从缓存中获取RS地址即可。当然这里有个意外:访问的region若果在RS上发生了改变,比如被balancer迁移到其他RS上了,这个时候,通过缓存的地址访问会出现异常,在出现异常的情况下,Client需要重新走一遍上面的流程来获取新的RS地址。总体来说,region的变动只会在极少数情况下发生,一般变动不会很大,所以在整个集群访问过程中,影响可以忽略。

一张表预分区N个,那就是一开始就设定了N个region;

hbasehregionmaxfilesize 设定的region大小,超过了就会split,就会增加一个region,对预分区没什么影响。

一张表假如不预分区,那么数据超过region最大值才会拆分,比如你1天10G数据,设定5G才split,两天内写数据都写在一个region里,没有分布式效果,改region就是热点。

预设分区一般配合rowkey设计解决热点,例如预分区5个,rowkey可设置前最A、B、C、D、E,程序里面随机的加其中的一个前缀,那么就会随机插入到各个region中,但是一般又会和业务系统需求有些矛盾。例如rowkey按时间戳字符串加盐,那么就只有一各个region scan再合起来统计会比较快,直接scan “A20181111”到“D20181128”很慢很麻,还有按用户ID、手机号等等做rowkey加盐或者hash散列可能都会在设计上有热点和业务需求的矛盾点。

以上就是关于大数据技术之HBase原理分析全部的内容,包括:大数据技术之HBase原理分析、HBase读写 *** 作-ROOT-表和.META.表、HBase读取(GET/SCAN)流程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9385455.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存