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的架构中,Client是用户与系统交互的接口,它通过远程过程调用(RPC)机制与HMaster和HRegionServer通信。对于数据读写操作,Client直接与HRegionServer交互,而对于表管理和元数据操作,Client则与HMaster...
### HBase架构简介 HBase是一种分布式的、面向列的开源数据库,是Apache顶级项目之一。它基于Google的Bigtable论文设计,旨在为海量数据提供实时读写访问能力。HBase利用Hadoop HDFS作为底层数据存储,并依赖于...
2. **HBase架构**:HBase的核心组件包括Region Server、Master服务器、ZooKeeper和表。Region Server负责数据存储和处理,Master服务器管理全局的表和Region分配,ZooKeeper用于协调集群和服务发现。 3. **行与列族...
"大数据时代数据库-云HBase架构生态及实践" 在大数据时代,数据库面临着巨大的挑战,如何解决这些挑战成为数据库架构师和开发者需要解决的问题。本文将从云HBase架构生态及实践角度,讨论大数据时代数据库的挑战和...
在大数据时代,云数据库HBase因其强大的架构创新和技术特性,成为了应对海量非结构化数据挑战的重要解决方案。HBase是一种分布式的、基于列族的NoSQL数据库,它在大规模数据存储和高并发处理方面展现出了卓越的能力...
8. HBase架构 第二章 陌陌海量存储案例 1. 案例介绍 2. 打招呼消息数据集介绍 3. 准备工作 4. 陌陌消息HBase表结构设计 5. 性能问题 6. Apache Phoenix 7. 基于Phoenix消息数据查询 第三章 HBase高级 1. 重要工作...
【大数据时代数据库-云HBase架构&生态&实践】阿里云的高级技术专家封神(曹龙)在DTCC2018大会上分享了关于大数据数据库的最新实践,特别是聚焦于云HBase的架构、生态及其在实际业务中的应用。云HBase作为大数据存储...
- **系统架构图**: - Speed Layer: 使用Storm进行实时数据处理,并将结果存储在HBase中。 - Serving Layer: 通过分布式数据库(如HBase)存储预先计算好的Batch View,以支持快速随机访问。 - Batch Layer: ...
HBase通过分布式架构能够在多台服务器上存储海量数据,这种架构使得HBase非常适合用来处理图书借阅数据这种具有大量记录和高写入频率的场景。而Hadoop,作为云计算平台的核心组件之一,提供了底层的分布式存储与计算...
HBase是一款基于Google Bigtable设计的开源...不过,需要注意的是,虽然可视化工具降低了操作难度,但对HBase的理解仍然是至关重要的,因为深入理解HBase的架构和原理才能更好地利用其特性,解决大数据场景下的挑战。
大数据相关技术框架架构图
### HBase核心概念与架构详解 #### HBase简介 HBase是一个开源的、面向列的分布式数据库系统,基于Google的Bigtable论文设计实现,并且是Hadoop生态系统中的关键组件之一。它提供了高可靠性、高性能、可伸缩性及...
HBase社区2018精选资料的知识点涵盖了HBase生态系统的多个方面,包括HBase的基本概念、架构、组件、应用案例、技术实践、性能优化策略、新特性、平台实践以及社区动态等。HBase是一个高性能的开源NoSQL数据库,属于...
HBase的架构设计支持实时更新、增量数据导入、随机和范围查询等特性,同时还具备高扩展性、高可用性、高可靠性和高性能的特点。它能够处理海量数据和高并发读写请求,广泛应用于多种业务场景。 云HBase应用场景解析...
HBase是ApacheHadoop中的一个子项目,Hbase依托于Hadoop的HDFS作为最基本存储基础单元...上图是hadoop的生态系统描述,hadoop所有应用都是构建于hdfs(它提供高可靠的底层存储支持,几乎已经成为分布式文件存储系统事实
1. **HBase架构原理**: HBase采用列式存储方式,数据按照行键(Row Key)进行排序。每个表被划分为多个Region,每个Region由一个Region Server负责管理。Region是表的逻辑分区,随着数据增长,Region会自动分裂以...
#### 三、HBase架构 HBase采用了主从式架构,主要包括以下几个核心组件: 1. **HRegionServer**:这是HBase集群中最基本的数据承载单元,每个HRegionServer负责管理一部分Region。Region是HBase表中的一种逻辑划分...