HBase 系统架构图
组成部件说明
Client:
使用HBase RPC机制与HMaster和HRegionServer进行通信
Client与HMaster进行通信进行管理类操作
Client与HRegionServer进行数据读写类操作
Zookeeper:
Zookeeper Quorum存储-ROOT-表地址、HMaster地址
HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况
Zookeeper避免HMaster单点问题
HMaster:
HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行
主要负责Table和Region的管理工作:
1 管理用户对表的增删改查操作
2 管理HRegionServer的负载均衡,调整Region分布
3 Region Split后,负责新Region的分布
4 在HRegionServer停机后,负责失效HRegionServer上Region迁移
HRegionServer:
HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据
HRegionServer管理一些列HRegion对象;
每个HRegion对应Table中一个Region,HRegion由多个HStore组成;
每个HStore对应Table中一个Column Family的存储;
Column Family就是一个集中的存储单元,故将具有相同IO特性的Column放在一个Column Family会更高效
HStore:
HBase存储的核心。由MemStore和StoreFile组成。
MemStore是Sorted Memory Buffer。用户写入数据的流程:
Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 触发Compact合并操作 -> 多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除 -> 当StoreFiles Compact后,逐步形成越来越大的StoreFile -> 单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region,Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。
由此过程可知,HBase只是增加数据,有所得更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。
HLog
引入HLog原因:
在分布式系统环境中,无法避免系统出错或者宕机,一旦HRegionServer意外退出,MemStore中的内存数据就会丢失,引入HLog就是防止这种情况
工作机制:
每个HRegionServer中都会有一个HLog对象,HLog是一个实现Write Ahead Log的类,每次用户操作写入Memstore的同时,也会写一份数据到HLog文件,HLog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知,HMaster首先处理遗留的HLog文件,将不同region的log数据拆分,分别放到相应region目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。
HBase存储格式
HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,格式主要有两种:
1 HFile HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile
2 HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File
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内容就是一些随机数字,目的是防止数据损坏
HFile里面的每个KeyValue对就是一个简单的byte数组。这个byte数组里面包含了很多项,并且有固定的结构。
KeyLength和ValueLength:两个固定的长度,分别代表Key和Value的长度
Key部分:Row Length是固定长度的数值,表示RowKey的长度,Row 就是RowKey
Column Family Length是固定长度的数值,表示Family的长度
接着就是Column Family,再接着是Qualifier,然后是两个固定长度的数值,表示Time Stamp和Key Type(Put/Delete)
Value部分没有这么复杂的结构,就是纯粹的二进制数据
HLog File
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
结束语:这篇文章是我专门在网上弄下来的,算是hbase部分的终极篇吧,我的服务端的源码系列也要基于这个顺序来开展。
转载于:https://my.oschina.net/u/923508/blog/413944
分享到:
相关推荐
在HBase的架构中,Client是用户与系统交互的接口,它通过远程过程调用(RPC)机制与HMaster和HRegionServer通信。对于数据读写操作,Client直接与HRegionServer交互,而对于表管理和元数据操作,Client则与HMaster...
**HBase架构图** HBase,全称是Apache HBase,是一个分布式的、面向列的开源数据库,基于Google的Bigtable论文设计,是Apache Hadoop项目的一部分。它为大规模数据集(数十亿行,数百万列)提供随机访问和强一致性...
2. **HBase架构**:HBase的核心组件包括Region Server、Master服务器、ZooKeeper和表。Region Server负责数据存储和处理,Master服务器管理全局的表和Region分配,ZooKeeper用于协调集群和服务发现。 3. **行与列族...
通过深入学习HBase,你可以掌握如何在大数据环境中构建高性能的实时数据存储系统。记住,理论知识与实践相结合是掌握HBase的关键,通过实际操作和项目经验,你会对HBase有更深入的理解。提供的“hbase 培训”资料...
### HBase架构简介 HBase是一种分布式的、面向列的开源数据库,是Apache顶级项目之一。它基于Google的Bigtable论文设计,旨在为海量数据提供实时读写访问能力。HBase利用Hadoop HDFS作为底层数据存储,并依赖于...
同时,系统可能还提供了可视化工具,如词云、网络图等,以直观地展示挖掘结果。 总的来说,"基于Django LayUI HBase的文献数据挖掘系统"将Web开发、前端设计和大数据处理紧密结合起来,形成一个完整的解决方案。它...
HBase社区2018精选资料的知识点涵盖了HBase生态系统的多个方面,包括HBase的基本概念、架构、组件、应用案例、技术实践、性能优化策略、新特性、平台实践以及社区动态等。HBase是一个高性能的开源NoSQL数据库,属于...
- **系统架构图**: - Speed Layer: 使用Storm进行实时数据处理,并将结果存储在HBase中。 - Serving Layer: 通过分布式数据库(如HBase)存储预先计算好的Batch View,以支持快速随机访问。 - Batch Layer: ...
#### HBase的系统架构 HBase的核心组件主要包括: - **HMaster**:作为主控节点,负责协调HBase中Table和Region的管理,如表的增删改查、RegionServer的负载均衡、Region分布调整等。 - **RegionServer**:数据处理...
本篇论文介绍了一种名为HOS的分布式存储系统的设计与实现,该系统基于HBase构建。随着大数据时代的到来,数据量的增长速度前所未有,为了有效存储和管理这些数据,迫切需要创新的存储方案。HBase作为一个分布式、列...
1. **HBase架构原理**: HBase采用列式存储方式,数据按照行键(Row Key)进行排序。每个表被划分为多个Region,每个Region由一个Region Server负责管理。Region是表的逻辑分区,随着数据增长,Region会自动分裂以...
HBase通过分布式架构能够在多台服务器上存储海量数据,这种架构使得HBase非常适合用来处理图书借阅数据这种具有大量记录和高写入频率的场景。而Hadoop,作为云计算平台的核心组件之一,提供了底层的分布式存储与计算...
总之,HBase作为大数据领域的关键组件,其学习和应用涉及多方面知识,包括分布式系统、数据存储、性能调优等。通过深入源码、熟练使用相关工具,我们可以更好地理解和驾驭这一强大的大数据存储系统。
HBase是一款基于Google Bigtable设计的开源...不过,需要注意的是,虽然可视化工具降低了操作难度,但对HBase的理解仍然是至关重要的,因为深入理解HBase的架构和原理才能更好地利用其特性,解决大数据场景下的挑战。
系统架构图v1.0.pptx展示了某一复杂信息系统的基础架构和其技术细节,主要涵盖了分布式、大数据处理以及Spring Cloud微服务框架的应用。该系统由多个组件构成,旨在提供高效、安全的服务,并确保运维保障。 首先,...
8. HBase架构 第二章 陌陌海量存储案例 1. 案例介绍 2. 打招呼消息数据集介绍 3. 准备工作 4. 陌陌消息HBase表结构设计 5. 性能问题 6. Apache Phoenix 7. 基于Phoenix消息数据查询 第三章 HBase高级 1. 重要工作...
Apache HBase是一种开源的非关系型分布式数据库(NoSQL),它是Apache Software Foundation旗下的Hadoop项目的一部分,是Google Bigtable的...通过学习和使用HBase,开发者可以对大规模数据集进行高效的处理和管理。
在本实验中,我们将深入学习如何在大数据环境中使用HBase,这是一个分布式列式数据库,它在Hadoop生态系统中扮演着重要角色。实验的目标是让你理解HBase在Hadoop架构中的地位,以及掌握通过Shell命令和Java API进行...
"大数据时代数据库-云HBase架构生态及实践" 在大数据时代,数据库面临着巨大的挑战,如何解决这些挑战成为数据库架构师和开发者需要解决的问题。本文将从云HBase架构生态及实践角度,讨论大数据时代数据库的挑战和...