hbase读写流程

来源:互联网 发布:多益网络2018校招 编辑:程序博客网 时间:2024/06/15 16:54
----------------------------------------

hbase表数据的检索流程图(读和写的流程)  
    
    1、hbase在Hadoop集群中的物理架构
        master通常是Hadoop集群中的一台或两台(backup-Master)
        regionserver通常是Hadoop集群中的部分或全部
            regionserver通常和datanode部署在同一台服务器上
                比如datanode是10个
                    regionserver可以是10个或小于10个
        zookeeper通常是集群中单独的3/5台服务器  
    2、hbase架构图重要组件的名称及作用

        client:
            读写访问hbase的用户  
        zookeeper:
            基于观察者模式监控master和regionserver运行状态,保证hbase的高可用性
            存储了hbase的寻址入口  
                存储了hbase表的meta元数据表的位置信息
                    meta表一般只有一个region
                    region存在哪台regionserver上  
            meta元数据表存储了哪些信息:
                一张表有哪些reigon
                region分别分配到哪些regionserver  
                每个reigon的startkey和stopkey的大小
        master:
            管理regionserver并分配表的region给regionserver
            对集群的region的数量进行负载均衡管理
            master会借助zookeeper感知regionserver的上线和下线
            master一般会有两台(backup-Master),保证master的高可用性
            master不参与hbase表数据的读和写,负载通常比较低
                master宕机一段时间内集群可以保持正常的读写
        regionserver:
            管理所在服务器节点上的所有region  
            负责响应客户端的读写请求(IO)
            处理三大机制(flush、compact、split)  
        Hlog:
            预写日志  
            用来临时保存写入到memstore中的数据,防止宕机造成memstore中的数据丢失
        Hadoop:
            利用hdfs给hbase提供存储,hbase是相当于Hadoop的一个客户端
            hdfs上存储了hbase的两种数据:
                HFile :
                    hbase表的数据文件
                    Hflie文件是Hadoop的二进制格式文件                 
                Hlog :
                    预写日志  
                    Hlog是Hadoop的sequence格式的文件  

                    
hbase表数据的写入流程:(根据rowkey进行写入)
1、client先去访问zookeeper,从zookeeper上获取meta表的位置信息
        以前的版本hbase的系统表除了meta表还有root表
        在root表中存储了meta表的位置信息
        新版本中将meta表的位置信息直接存入zookeeper中  
2、client向meta表的region所在的regionserver发起访问,读取meta表的数据,获取了hbase集群上所有的表的元数据
3、根据meta表的元数据信息(某张表有几个region及region如何分配及每个reigon的startkey和stopkey),
client找到当前要写入的表对应的region及所在regionserver信息
4、    client向对应的regionserver发起写入请求  
5、regionserver收到client请求并响应,client先把数据写入到Hlog防止数据丢失
6、再把数据写入到memstore内存缓存区(默认大小128M)
7、当数据写入到Hlog及memstore内存缓存区都成功时,写入才算成功
8、当memstore达到128M或其他的因素的触发,会将memstore中的数据flush成storeFile
9、当storeFile越来越多,会触发compact合并,将多个storeFile文件最终合并成一个文件
        合并分为minor compact 和 major compact  
        在大合并期间打上‘删除’标签的cell或者过期的cell会被统一清理
10、当某个store下的storeFile文件的最终合并后的大小达到10G时,会触发整个region的split分割,一个region一分为二,由master进行分配  
                    
                    
hbase表数据的读流程:(根据rowkey读)                
        
1、client先去访问zookeeper,从zookeeper上获取meta表的位置信息
        以前的版本hbase的系统表除了meta表还有root表
        在root表中存储了meta表的位置信息
        新版本中将meta表的位置信息直接存入zookeeper中  
2、client向meta表的region所在的regionserver发起访问,读取meta表的数据,获取了hbase集群上所有的表的元数据
3、根据meta表的元数据信息(某张表有几个region及region如何分配及每个reigon的startkey和stopkey),client找到当前要写入的表对应的region及所在regionserver信息     
4、client向对应的regionserver发起读请求  
5、regionserver收到客户端的读请求,会先扫描memstore,在扫描blockcache(读缓存),没有找到数据后再去读取storeFile文件  
6、regionserver将数据响应给client 
原创粉丝点击