`

HBase 系统架构

阅读更多

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

0
0
分享到:
评论

相关推荐

    Hbase体系架构与安装

    hbase的体系架构安装,hbase的三种安装模式,及一些操作命令

    Hbase系统架构及数据结构.md

    Hbase系统架构及数据结构,进阶篇

    HBase体系架构与安装

    ### HBase体系架构 HBase是建立在Hadoop之上的分布式、可扩展的列族数据库。它能够处理PB级别的大规模数据,并提供实时读写能力。HBase的核心设计思想源自Google的Bigtable论文。 #### HBase架构组件 1. **...

    Cassandra与HBase系统架构比对.pdf

    Cassandra与HBase系统架构比对 Cassandra与HBase是两种常用的NoSQL数据库管理系统,它们之间有着许多相似之处,但同时也存在着一些关键的差异。以下是对Cassandra与HBase系统架构的比对。 数据模型 Cassandra的...

    Cassandra与HBase系统架构比对

    ### Cassandra与HBase系统架构比对 #### 一、引言 随着大数据技术的发展,分布式数据库因其出色的扩展性和高可用性而受到了广泛的关注。在众多的NoSQL数据库中,Cassandra 和 HBase 是两种非常流行的分布式数据库...

    hbase应用架构指南

    Hbase全称为Hadoop Database,即Hbase是Hadoop的数据库,是一个分布式的存储系统。...本篇文章将重点介绍Hbase三个方面的内容:Hbase体系结构(架构)的介绍、Hbase shell的操作、Hbase的Java api的客户端操作

    Hadoop技术HBase系统架构共12页.pdf.zip

    《Hadoop技术与HBase系统架构详解》 在大数据处理领域,Hadoop和HBase是两个不可或缺的关键组件。Hadoop,作为一个开源的分布式计算框架,为海量数据的存储和处理提供了强大支持,而HBase则是在Hadoop之上构建的一...

    HBase应用架构PDF版本

    《HBase应用架构》这本书由吉恩-马克·斯帕加里撰写,中文版由陈敏敏、夏锐和陈其生翻译,深入探讨了分布式大数据存储系统HBase的架构和应用。HBase是建立在Apache Hadoop之上的一款非关系型数据库,特别适合处理...

    Cassandra与HBase系统架构比对.zip

    **Cassandra与HBase系统架构比对** Cassandra和HBase是两个广泛使用的分布式NoSQL数据库,它们在处理大规模数据存储和检索方面表现出色。两者都设计用于处理PB级的数据,支持高并发读写操作,并且是高度可扩展的。...

    hbase 资源合集 hbase 企业应用开发实战 权威指南 hbase 实战 hbase 应用架构

    《HBase资源合集》包含了四本重量级的书籍,分别是《HBase企业应用开发实战》、《HBase权威指南》、《HBase实战》以及《HBase应用架构》。这些书籍深入浅出地探讨了HBase在大数据环境中的应用与开发,是学习和掌握...

    HBase存储架构详解

    HBase存储架构详解 HBase存储架构是HBase的核心组件之一,它们之间的关系非常复杂。本文将详细解释HBase存储架构的组件、它们之间的关系,以及它们如何工作。 HBase存储架构主要包含以下几个组件: 1. HMaster:...

    HBASE架构和原理解析

    #### 六、HBase系统架构 1. **HMaster节点**:负责管理HRegionServer节点,包括负载均衡、HRegion的分配和管理等任务。此外,HMaster还执行DDL操作(如创建、删除命名空间和表)以及维护元数据。 2. **...

    HBase架构图

    **HBase架构图** HBase,全称是Apache HBase,是一个分布式的、面向列的开源数据库,基于Google的Bigtable论文设计,是Apache Hadoop项目的一部分。它为大规模数据集(数十亿行,数百万列)提供随机访问和强一致性...

    hbase安装与hbase架构说明

    在HBase的架构中,Client是用户与系统交互的接口,它通过远程过程调用(RPC)机制与HMaster和HRegionServer通信。对于数据读写操作,Client直接与HRegionServer交互,而对于表管理和元数据操作,Client则与HMaster...

    Hbase 组件 、架构

    总之,HBase的架构和组件设计体现了它作为一个分布式NoSQL数据库的优势和特点,通过合理的数据划分、负载均衡和故障转移机制,保证了数据存储的高可靠性和系统的高性能。HBase特别适用于处理大量数据的实时读写操作...

    大数据书籍-Hbase架构设计(高清)

    4. **架构设计**:深入讨论如何根据业务需求设计合理的Hbase表结构,包括数据模型的选择、索引优化、时间戳处理,以及如何处理稀疏数据。 5. **性能优化**:分享在项目实践中遇到的问题及解决方案,如Region大小...

    Hbase架构简介、实践

    #### HBase系统架构 - **HMaster**:负责Region的分配和负载均衡,管理Table Schema,以及分发关闭、刷新、压缩等管理消息。还负责集群管理,如容错、扩容、日志分裂等。 - **Client**:执行索引查找,进行数据的增...

    浅谈HBASE数据结构设计.pdf

    HBase数据结构设计知识梳理: 1. HBase概述 HBase是Apache Software Foundation旗下的一个开源的非关系型分布式数据库(NoSQL),它是Google Bigtable的开源实现,基于Hadoop文件系统(HDFS)构建。HBase的设计目标...

Global site tag (gtag.js) - Google Analytics