HBase技术介绍

0 原文章地址

1 HBase简介

  • HBase:Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

此处输入图片的描述

  • Hadoop HDFS为HBase提供了高可靠性的底层存储支持;Hadoop MapReduce为HBase提供了高性能的计算能力Zookeeper为HBase提供了稳定服务和failover机制Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单; Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

2 HBase访问接口

  • Native Java API:最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据。
  • HBase Shell:HBase的命令行工具,最简单的接口,适合HBase管理使用
  • Pig,可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据,适合做数据统计。

3 HBase数据模型

3.1 Table & Column Family

  • Row Key: 行键,Table的主键,Table中的记录按照Row Key排序
  • Timestamp: 时间戳,每次数据操作对应的时间戳,可以看作是数据的version number。
  • Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

3.2 Table & Region

  • 当Table随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region由[startkey,endkey)表示,不同的region会被Master分配给相应的RegionServer进行管理:
    此处输入图片的描述

3.3 -ROOT- && .META. Table

  • HBase中有两张特殊的Table,-ROOT-.META.
    • -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region。
    • .META.:记录了用户表的Region信息,.META.可以有多个regoin。
    • Zookeeper中记录了-ROOT-表的location。

此处输入图片的描述

3.4 MapReduce on HBase

  • 在HBase系统上运行批处理运算,最方便和实用的模型依然是MapReduce:
    此处输入图片的描述

  • HBase Table和Region的关系,比较类似HDFS File和Block的关系,HBase提供了配套的TableInputFormatTableOutputFormat API,可以方便的将HBase Table作为Hadoop MapReduce的Source和Sink,对于MapReduce Job应用开发人员来说,基本不需要关注HBase系统自身的细节。

4 HBase系统架构

此处输入图片的描述

4.1 Client

  • HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信:
    • 对于管理类操作,Client与HMaster进行RPC。
    • 对于数据读写类操作,Client与HRegionServer进行RPC。

4.2 HMaster

  • HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行,HMaster在功能上主要负责Table和Region的管理工作:
    • 管理用户对Table的增、删、改、查操作。
    • 管理HRegionServer的负载均衡,调整Region分布。
    • 在Region Split后,负责新Region的分配。
    • 在HRegionServer停机后,负责失效HRegionServer 上的Regions迁移。

4.3 HRegionServer

  • HRegionServer主要负责响应用户I/O请求向HDFS文件系统中读写数据,是HBase中最核心的模块

此处输入图片的描述

  • HRegionServer内部管理了一系列HRegion对象,每个HRegion对应了Table中的一个RegionHRegion中由多个HStore组成每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。
  • 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上。下图描述了Compaction和Split的过程:
      此处输入图片的描述
  • 一旦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,完成数据恢复。

4.4 Zookeeper

  • Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态。此外,Zookeeper也避免了HMaster的单点问题。

5 HBase存储格式

  • HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:
    • HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile。
    • HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File。

5.1 HFile

  • HFile的存储格式:
    此处输入图片的描述

5.2 HLogFile

此处输入图片的描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值