hbase之原理详解

1、hbase的架构


首先我们介绍hbase的架构

如图所示,hbase的最底层结构是基于hdfs的,它将自己的日志文件`hlog`,以及数据表`Region`存储在hdfs的datanode当中。
而管理hbase的主要是zookeeper和master。其中,hbase主要依靠zookeeper管理,master仅仅负责当启动hbase时,分配区域到指定区域服务器。当hbase启动以后master几乎不起作用,我们可以关掉Hmaster进程,hbase仍然可以运行。
同学肯定对刚刚提到的regionServer(区域服务器),和区域(region)感到陌生。下面我们来具体解释一下概念。regionServer即是一台hbase服务器,一个进程。我们配置的伪分布式hbase就只有一台regionServer,而真正的分布式集群每一台部署了hbase的节点都是一个regionServer。
我们使用的hbase是一个列式数据库,一张表可以达到十亿行,这就需要将表拆分成多个部分储备起来。即是分别存入region中,由regionserver管理。


2 hbase写入与交互


仍然由图可知,RegionServer主要管理两种文件,一是Hlog(预写日志  write-ahead log WAL),二是region(实际的数据文件)。当用户向hbase请求写入put数据时,首先就要写入Hlog实现的预写日志当中,当hbase服务器崩溃时,hlog可以回滚还没有持久化的数据,以便后续从WAL中恢复数据。
当数据写入预写日志后,数据便会存放当region中的memStore中,同时还会检查memStore是否写满,如果写满,就会被请求刷写到磁盘中。
当我们用客户端与hbase交互时,一般要经历如下步骤:
1.联系zookeeper,找出meta表(元数据表)所在rs(regionserver) `/hbase/meta-region-server`
2.定位row key,找到对应region server
​  
3.缓存信息在本地(再次查找数据时,不需要经过1,2步骤)
4.联系RegionServer
5.HRegionServer负责open HRegion对象,为每个列族创建Store对象,Store包含多个StoreFile实例,他们是对HFile的轻量级封装。每个Store还对应了一个MemStore,用于内存存储数据。



猜你喜欢

转载自blog.csdn.net/qq_38180223/article/details/80872167
今日推荐