`

HBase架构图

阅读更多

HBASE架构图

HBase系统架构图

Client 
HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信,对于管理类操作,Client与HMaster进行RPC;对于数据读写类操作,Client与HRegionServer进行RPC
Zookeeper
Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题,见下文描述
HMaster
HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:
1. 管理用户对Table的增、删、改、查操作
2. 管理HRegionServer的负载均衡,调整Region分布
3. 在Region Split后,负责新Region的分配
4. 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移
HRegionServer
HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。
HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。

HStore
HStore存储是HBase存储的核心了,其中由两部分组成,一部分是MemStore,一部分是StoreFiles。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中会进行版本合并和数据删除,因此可以看出HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行的,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成2个Region,父Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。

HLog

HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File。
在理解了上述HStore的基本原理后,还必须了解一下HLog的功能,因为上述的HStore在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦HRegionServer意外退出,MemStore中的内存数据将会丢失,这就需要引入HLog了。每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

HLog数据存储

HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是“写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequence number。HLog Sequece File的Value是HBase的KeyValue对象,即对应HFile中的KeyValue

HFile数据存储

HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile。
首先HFile文件是不定长的,长度固定的只有其中的两块:Trailer和FileInfo。Trailer中有指针指向其他数据块的起始点。

File Info中记录了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等。

Data Index和Meta Index块记录了每个Data块和Meta块的起始点。
Data Block是HBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制。每个Data块的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询。每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字,目的是防止数据损坏。后面会详细介绍每个KeyValue对的内部构造。
HFile里面的每个KeyValue对就是一个简单的byte数组。但是这个byte数组里面包含了很多项,并且有固定的结构。开始是两个固定长度的数值,分别表示Key的长度和Value的长度。紧接着是Key,开始是固定长度的数值,表示RowKey的长度,紧接着是RowKey,然后是固定长度的数值,表示Family的长度,然后是Family,接着是Qualifier,然后是两个固定长度的数值,表示Time Stamp和Key Type(Put/Delete)。Value部分没有这么复杂的结构,就是纯粹的二进制数据了。

分享到:
评论

相关推荐

    hbase安装与hbase架构说明

    HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来...

    HBase应用架构PDF版本

    HBase应用架构 [美] 吉恩-马克·斯帕加里(Jean-Marc Spaggiari) 著,陈敏敏 夏锐 陈其生 译

    HBase海量数据存储实战视频教程

    8. HBase架构 第二章 陌陌海量存储案例 1. 案例介绍 2. 打招呼消息数据集介绍 3. 准备工作 4. 陌陌消息HBase表结构设计 5. 性能问题 6. Apache Phoenix 7. 基于Phoenix消息数据查询 第三章 HBase高级 1. 重要工作...

    基于HBase的图书借阅数据挖掘模型设计与实现.pdf

    基于HBase的图书借阅数据挖掘模型设计与实现.pdf

    Kafka+FlumeNG+Storm+HBase构架设计

    Kafka+FlumeNG+Storm+HBase构架设计

    HBase逻辑架构.jpg

    大数据相关技术框架架构图

    Hbase架构与原理

    HBase是ApacheHadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元...上图是hadoop的生态系统描述,hadoop所有应用都是构建于hdfs(它提供高可靠的底层存储支持,几乎已经成为分布式文件存储系统事实

    大数据时代数据库-云HBase架构&生态&实践

    本文来自于yq.aliyun.com,主要内容有三个方面:首先介绍了业务挑战带来的架构演进,其次分析了ApsaraDBHBase及生态,最后分享了大数据数据库的实际案例。...这个时候MySQL变成了HBase,检索变成了Solr

    kettle架构图

    kettle数据整合平台是一款通用的数据...kettle数据整合平台除了支持各种常见的数据库如Oracle、DB2、MySQL 等,还支持各种平面文件,另外为了适应大数据环境,数据整合平台还支持 Hadoop、HBase、MongoDB 等数据源。

    HbaseGUI:Hbase图形用户界面

    更多文档请转到简介...即:不重启GUI程序的情况下,动态切换不同版本的Hbase数据库原生支持黑暗主题(致谢Jmeter)架构图工程分为三部分组成:HBaseGUISwing主程序,Hbase-adapter-interface适配器接口层和Hbase-a

    Hbase系统架构及数据结构

    下面一幅图是Hbase在HadoopEcosystem中的位置。HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(rowfamily)RowKey与nosql数据库们一样,rowkey是用来检索记录的主键。访问hbasetable中的行,只有三种...

    结合MapReduce和HBase的遥感图像并行分布式查询.pdf

    #资源达人分享计划#

    Hbase的应用场景、原理及架构分析

    本文来自于csdn,文章主要从HBase概述以及数据模型基本架构,简单的介绍Hbase了,希望对大家有帮助。HBase是一个构建在HDFS上的分布式列存储系统。HBase是ApacheHadoop生态系统中的重要一员,主要用于海量结构化数据...

    HBase主要运行机制(物理存储和逻辑架构)

    HBase表中的所有行都是按照行键的字典序排列的。因为一张表中包含的行的数量非常多,有时候会高达几亿行,所以需要分布存储到多台...图1HBase的Region存储模式图Region是按大小分割的,每个表一开始只有二个Region,

    基于Django+LayUI+HBase的文献数据挖掘系统的实现项目源码

    基于Django+LayUI+HBase的文献数据挖掘系统的实现项目源码 引言:本系统的目标是设计并实现...本系统的功能主要分为三个模块,分别是数据统计分析结果展示平台、后台管理系统和数据存储平台,其总体功能架构如图所示。

Global site tag (gtag.js) - Google Analytics