资源描述
,数据库原理及应用,电子科技大学,-,张凤荔,数据库系统原理与开发,7.2,列存储数据库,HBASE,的存储架构,HBASE,的系统架构及基本组件,【,本节学习目标,】,一,、,HBASE,存储结构,-,含义,回顾,HBASE,的逻辑模型:表表的形式表达和存储数据,表,-,行和列,列,-,若干个列族。表基于行键、列族、列限定符和时间版本。每个,c,列族,DFS,上单独文件中,空值不会被保存。,Key,和,Version number,在每个,column family,中均有一份;,HBase,为每个值维护了多级索引,即:,物理存储,-,上面的逻辑模型对于物理文件的过程,一,、,HBASE,存储结构,物理存储,1,、表中所有行都按照,row key,的字典序排列;,2,、,Table,在行的方向上分割为多个,Region,;,3,、,Region,按大小分割的,每个表开始只有一个,region,,随着数据增多,,region,不断增大,当增大到一个阀值的时候,,region,就会等分会两个新的,region,,之后会有越来越多的,region,;,4,、,Region,是,Hbase,中分布式存储和负载均衡的最小单元,不同,Region,分布到不同,RegionServer,上,一,、,HBASE,存储结构,存储模型图,模型层次图,一,、,HBASE,存储结构,-,存储部件,1),表,Table,:面向列(族)的存储和权限控制,列(族)独立检索的稀疏存储。按行健的字典排序;,Table,在行的方向上分割多个,Region,。,),区域,Region(,表的,Regions),:每个,Region,存储着,Table,的若干行,,Region,是分布式存储的最小单元。,Store(Region,中以列族为单位的单元,),:区域由一个或者多个,Store,组成,每个,store,保存一个列族。,Strore,由,memStore,和,0,至多个,StoreFile,StoreFile,:以,HFile,的格式存储在分布式文件系统(,HDFS,)上,一,、,HBASE,存储结构,storefile,的结构,StoreFile,:以,HFile,存储在,HDFS,)上,组成成,1,),DataBlock,保存表中的数据,可压缩;,2,),MetaBlock,用户自定义的键值对,可压缩;,),File Info,存储,HFile,的元信息,不能压缩,用户也可以在这一部分添加自己的元信息;,),DataBlockIndex,存储数据块索引,索引的键值是第一条记录的键值(,key,);,5,),MetaBlockIndex,元数据块的索引;,6,),Trailer,保存每一段的偏移量,读取一个,HFile,时,会首先读取,Trailer,(段的开始位置)。,Block(,读写最小单元,),,存储管理的最小单位。,HBase,数据存储的层次的关系,),Table,和,Region,的关系,1,多,2,),Region,和,Store,的关系:每一行都包含一或多个列族,所以每个,Region,包括一到多个,Store,。,1,多,3,),Store,和,HFile,的关系:每个,store,由一个,memStore,和,0,至多个,HFile,组成,在,client,进行数据写过程中,数据会先写入缓冲(,memStore,),当缓冲(,memStore,)到达一定大小的时候,就会,flush,到硬盘生成一个,Hfile,。,1,多,二、,HBASE,的系统构架,-,集群,Hbase,是一个分布式的数据库,使用,Zookeeper,来管理集群。,在架构层面上分为,Master,和多个,RegionServer,。,在分布式的生产环境中,,HBase,需要运行在,HDFS,之上,由,HDFS,提供基础的存储设施,上层提供访问的数据的,API,,对,HBase,的数据进行管理,,集群主要主服务器(,Master,)、区域服务器(,Region Server,)、协调者服务器(,Zookeeper,)等组成,,二、,HBASE,的系统构架,-,集群图示,集群构架图,二、,HBASE,的系统构架,主服务器,管理区域服务器;,指派区域服务器对特定区域服务;,恢复失效的区域服务器,负载均衡和修复时区域服务器,监听,ZooKeeper,中的状态,其管理职能包括创建、删除、修改表的定义等;,负责分配区域给区域服务器。,多个,Master,节点共存,只有一个,Master,是提供服务的,其他的,Master,节点处于待命的状态。当正在工作的,Master,节点失效时,其他的,Master,则会接管集群。成,二、,HBASE,的系统构架,-,区域服务器,为区域的访问提供服务,直接为用户提供服务;,负责维护区域的合并与分割;负责数据存持久化。,管理表格,实现读写操作。,客户端直接连接区域服务器,并通信获取,HBase,中的数据。,二、,HBASE,的系统构架,协调者,协调者(,Zookeeper,),保证任何时候集群中只有一个,master,存储所有,Region,的寻址入口,实时监控区域服务器的状态,将,Region,上线和下线的信息实时通知给,Master,存储,Hbse,的,schema,,有哪些,table,,,table,有哪些列族。,通过选举,集群中只有一个,master,处于运行状态。,Zookeeper,负责,Region,和区域服务器的注册。解决分布式环境下数据管理问题:,1.,统一命名,2.,状态同步,3.,集群管理,4.,配置同步,二、,HBASE,的系统构架,-client,Client:,请求发起者,通过,API,,包含访问,Hbase,的接口,维护着一些,cache,来加快对,Hbase,的访问,比如,region,的位置信息。,访问,HBase,的接口,并维护,cache,来加快对,HBase,的访问,比如,region,的位置信息,.,使用,HBase RPC,机制与,HMaster,和区域服务器进行通信,.,Client,与,HMaster,进行通信进行管理类操作,.,Client,与区域服务器进行数据读写类操作,二、,HBASE,的系统,基本组件,HBase,采用,Master/Slave,架构搭建集群,由,HMaster,节点、区域服务器节点、,ZooKeeper,集群组成,,在底层,它将数据存储于分布式文件系统中。区域服务器包含多个,HRegion,,由,WAL(HLog),、,BlockCache,、,MemStore,、,HFile,组成,,二、,HBASE,的系统构架,-,组件图,组件图,二、,HBASE,的系统构架,-,组件解释,HLog(WAL log),:,WAL,意为先写日志后记录数据(,Write ahead log,),用做灾难恢复,,Hlog,记录数据的所有变更,WAL,是,HDFS,上的一个文件,写操作都先将数据写入日志后,才会真正更新,MemStore,,最后写入,HFile,中。,区域服务器失效后,可以从日志文件中读取数据,重做所有的操作,来保证数据的一致性。,日志文件会定期删除旧的文件,(,已写到,HFile,中的,Log,可以删除,),二、,HBASE,数据库,系统构架,-HLOG,每个区域服务器维护一个Hlog,而不是每个Region一个。,HLog是一个普通的Hadoop序列文件,它的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,包括table和region名字,sequence number和timestamp,,HLog Sequece File的Value是Hbase的键值对象,即对应HFile中的键值。,二、,HBASE,数据库,系统构架,Hlog,相关,LogFlusher,,数据以键值形式到达区域服务器,写入,WAL,,之后写入一个,SequenceFile,。日志文件先写内存,,LogFlusher,定期把缓冲器中数据写到,Hfile(,磁盘上,),。,LogRoller,,,Log,配置大小,默认每,60,分钟,会打开一个新的,log,文件。,LogRoller,调用,HLog.rollWriter(),,定时滚动日志,利用,HLog.cleanOldLogs(),可以清除旧的日志。取得存储文件中的最大的,sequence number,,存在一个,log,所有的条目的“,sequence number”,均低于这个值,如果存在,将删除这个,log,HBASE,数据库存储与,系统构架,HBASE,的逻辑结构,表、行、行键、列族、列、版本、单元等,存储结构(物理结构):,region,、,store,、,Hfile,体系机构,+,组成:,master,、,region server,、,Zookeeper,、,client,,,HLOG,等,Hlog,的管理机制,),。,本节学习结束!,
展开阅读全文