Hbase原理,Hbase架构,Hbase的流程处理——>>深入细读
图一图一:hbase的平面架构图角色划分client:包含访问HBase的接口并维护cache来加快对HBase的访问zookeeper:保证任何时候,集群中只有一个活跃master存贮所有Region的寻址入口。实时监控Region server的上线和下线信息。并实时通知Master存储HBase的schema和table元数据HMaster:为R...
·
图一
图一:hbase的平面架构图
角色划分
client:
包含访问HBase的接口并维护cache来加快对HBase的访问
zookeeper:保证任何时候,集群中只有一个活跃master
存贮所有Region的寻址入口。
实时监控Region server的上线和下线信息。并实时通知Master
存储HBase的schema和table元数据
HMaster:为Region server分配region
负责Region server的负载均衡
发现失效的Region server并重新分配其上的region
管理用户对table的增删改操作
HReginionServer:
Region server维护region,处理对这些region的IO请求
Region server负责切分在运行过程中变得过大的region
HLog:
预写日志,当我们对hbase中的数据做出处理,会优先写入预写日志,再对表中的数据做出真正的处理,同时异步向HDFS中写入,以防断电等事故导致的数据丢失
HReginionServer里面的组件
HRegion:
HReginionServer里面的区域,可以理解为表,一张表可以拆分为多个HRegion
Store:
列族。
MemStore:
内存。对数据的操作会先写到内存,再溢写到下面的StoreFile/HDfFle
StoreFile/HDfFle:
一个region由多个store组成,一个store对应一个CF(列族)
store包括位于内存中的memstore和位于磁盘的storefile写操作先写入memstore,当memstore中的数据达到某个阈值,hregionserver会启动flashcache进程写入storefile,每次写入形成单独的一个storefile
当storefile文件的数量增长到一定阈值后,系统会进行合并(minor、major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的storefile
当一个region所有storefile的大小和数量超过一定阈值后,会把当前的region分割为两个,并由hmaster分配到相应的regionserver服务器,实现负载均衡
客户端检索数据,先在memstore找,找不到去blockcache,找不到再找storefile
HBASE的读写流程:
1、客户端client发送请求给zookeeper,请求回HBASE集群里面所有表的元数据存放在哪个个HReginionServer上
2、客户端client通过zookeeper的返回信息,发送请求给存放所有表元数据的HReginionServer,找到我们要访问的表的元数据
3、客户端client通过存放所有表元数据的HReginionServer的返回信息,找到我们想要做出处理的表存放在哪个HReginionServer做出请求处理
读流程:
3.1、客户端cliet先找到找到与命令对应的HRegion(表)
3.2、再找到找到与命令对应的Store(列族)
3.3、首先会进入MemStore(内存)去寻找有没有我们搜索的东西
3.4、在MemStore里没找到,会去blockcache(读缓存。图是网上找的,里面没有画出来这个)里面找
3.5、blockcache里面也没找到,再去StoreFile/HDfFle上找
3.6、同时会将在blockcache里面存放一份数据,下次再次查找,就不用进StoreFile/HDfFle找,避免了IO的触发,提高效率
写流程:
3.1、客户端cliet先找到找到与命令对应的HRegion(表)
3.2、再找到找到与命令对应的Store(列族)
3.3、再往HLog(预写日志)里面写入操作
3.4、HLog写入成功后会往MemStore(内存)里面写入
3.5、当MemStore写满了后会溢写到StoreFile/HDfFle
blockcache里面的内存非常珍贵,所以才用LRU的方式进行清除最近最少使用的数据
图二为立体图,先理解透彻平面图再理解立体图,加深对hbase的理解
打字不易,且看且点赞
更多推荐
已为社区贡献3条内容
所有评论(0)