时尚flash网站,关键字优化技巧,西安免费建网站制作,建设工程施工合同网站RegionServer是HBase系统中最核心的组件#xff0c;主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系#xff0c;包含多个各司其职的核心模块#xff1a;HLog、MemStore、HFile以及BlockCache。RegionServer内部结构RegionServer是HBase系统响应…RegionServer是HBase系统中最核心的组件主要负责用户数据写入、读取等基础操作。RegionServer组件实际上是一个综合体系包含多个各司其职的核心模块HLog、MemStore、HFile以及BlockCache。RegionServer内部结构RegionServer是HBase系统响应用户读写请求的工作节点组件由多个核心模块组成其内部结构如图所示。一个RegionServer由一个(或多个)HLog、一个BlockCache以及多个Region组成。其中HLog用来保证数据写入的可靠性BlockCache可以将数据块缓存在内存中以提升数据读取性能Region是HBase中数据表的一个数据分片一个RegionServer上通常会负责多个Region的数据读写。一个Region由多个Store组成每个Store存放对应列簇的数据比如一个表中有两个列簇这个表的所有Region就都会包含两个Store。每个Store包含一个MemStore和多个HFile用户数据写入时会将对应列簇数据写入相应的MemStore一旦写入数据的内存大小超过设定阈值系统就会将MemStore中的数据落盘形成HFile文件。HFile存放在HDFS上是一种定制化格式的数据存储文件方便用户进行数据读取。HLogHBase中系统故障恢复以及主从复制都基于HLog实现。默认情况下所有写入操作(写入、更新以及删除)的数据都先以追加形式写入HLog再写入MemStore。大多数情况下HLog并不会被读取但如果RegionServer在某些异常情况下发生宕机此时已经写入MemStore中但尚未f lush到磁盘的数据就会丢失需要回放HLog补救丢失的数据。此外HBase主从复制需要主集群将HLog日志发送给从集群从集群在本地执行回放操作完成集群之间的数据复制。HLog文件结构HLog文件的基本结构如图所示。说明如下•每个RegionServer拥有一个或多个HLog(默认只有1个1.1版本可以开启MultiWAL功能允许多个HLog)。每个HLog是多个Region共享的图中Region A、Region B和Region C共享一个HLog文件。•HLog中日志单元WALEntry(图中小方框)表示一次行级更新的最小追加单元它由HLogKey和WALEdit两部分组成其中HLogKey由table name、region name以及sequenceid等字段构成。WALEdit用来表示一个事务中的更新集合在0.94之前的版本中如果一个事务对一行row R三列c1、c2、c3分别做了修改那么HLog中会有3个对应的日志片段如下所示然而这种日志结构无法保证行级事务的原子性假如RegionServer更新c2列之后发生宕机那么一行记录中只有部分数据写入成功。为了解决这样的问题HBase将一个行级事务的写入操作表示为一条记录如下所示其中WALEdit会被序列化为格式比如-1为标识符表示这种新的日志结构。HLog文件存储HBase中所有数据(包括HLog以及用户实际数据)都存储在HDFS的指定目录(假设为hbase-root)下可以通过hadoop命令查看hbase-root目录下与HLog有关的子目录如下所示其中/hbase/WALs存储当前还未过期的日志/hbase/oldWALs存储已经过期的日志。可以进一步查看/hbase/WALs目录下的日志文件如下所示/hbase/WALs目录下通常会有多个子目录每个子目录代表一个对应的RegionServer。以hbase17.xj.bjbj.org,60020,1505980274300为例hbase17.xj.bjbj.org表示对应的RegionServer域名60020为端口号1505980274300为目录生成时的时间戳。每个子目录下存储该RegionServer内的所有HLog文件如下所示HLog文件为HLog生命周期HLog文件生成之后并不会永久存储在系统中它的使命完成后文件就会失效最终被删除。HLog整个生命周期如图所示。HLog生命周期包含4个阶段1)HLog构建HBase的任何写入(更新、删除)操作都会先将记录追加写入到HLog文件中。2)HLog滚动HBase后台启动一个线程每隔一段时间(由参数hbase.regionserver. logroll.period决定默认1小时)进行日志滚动。日志滚动会新建一个新的日志文件接收新的日志数据。日志滚动机制主要是为了方便过期日志数据能够以文件的形式直接删除。3)HLog失效写入数据一旦从MemStore中落盘对应的日志数据就会失效。为了方便处理HBase中日志失效删除总是以文件为单位执行。查看某个HLog文件是否失效只需确认该HLog文件中所有日志记录对应的数据是否已经完成落盘如果日志中所有日志记录已经落盘则可以认为该日志文件失效。一旦日志文件失效就会从WALs文件夹移动到oldWALs文件夹。注意此时HLog并没有被系统删除。4)HLog删除Master后台会启动一个线程每隔一段时间(参数hbase.master.cleaner. interval默认1分钟)检查一次文件夹oldWALs下的所有失效日志文件确认是否可以删除确认可以删除之后执行删除操作。确认条件主要有两个•该HLog文件是否还在参与主从复制。对于使用HLog进行主从复制的业务需要继续确认是否该HLog还在应用于主从复制。•该HLog文件是否已经在OldWALs目录中存在10分钟。为了更加灵活地管理HLog生命周期系统提供了参数设置日志文件的TTL(参数hbase.master.logcleaner.ttl默认10分钟)默认情况下oldWALs里面的HLog文件最多可以再保存10分钟。文章基于《HBase原理与实践》一书