HBase是什么

HBase是一个分布式的、面向列的开源数据库,在Hadoop之上提供了类似于Bigtable的能力,是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。

HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文“Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

HBase

HBase 是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是 HBase 基于列的而不是基于行的模式。

结构介绍

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

与 FUJITSU Cliq 等商用大数据产品不同,HBase 是 Google Bigtable 的开源实现,类似 Google Bigtable 利用 GFS 作为其文件存储系统,HBase 利用 Hadoop HDFS 作为其文件存储系统;Google 运行 MapReduce 来处理 Bigtable 中的海量数据,HBase 同样利用 Hadoop MapReduce 来处理 HBase 中的海量数据;Google Bigtable 利用 Chubby 作为协同服务,HBase 利用 Zookeeper 作为对应。

上图描述 Hadoop EcoSystem 中的各层系统。其中,HBase 位于结构化存储层,Hadoop HDFS 为 HBase 提供了高可靠性的底层存储支持,Hadoop MapReduce 为 HBase 提供了高性能的计算能力,Zookeeper 为 HBase 提供了稳定服务和 failover 机制。

此外,Pig 和 Hive 还为 HBase 提供了高层语言支持,使得在 HBase 上进行数据统计处理变的非常简单。 Sqoop 则为 HBase 提供了方便的 RDBMS 数据导入功能,使得传统数据库数据向 HBase 中迁移变的非常方便。

模型

主要讨论逻辑模型和物理模型

(1)逻辑模型

Hbase 的名字的来源是 Hadoop database,即 hadoop 数据库。

主要是从用户角度来考虑,即如何使用 Hbase。

(2)物理模型

主要从实现 Hbase 的角度来讨论

访问接口

1. Native Java API,最常规和高效的访问方式,适合 Hadoop MapReduce Job 并行批处理 HBase 表数据

2. HBase Shell,HBase 的命令行工具,最简单的接口,适合 HBase 管理使用

3. Thrift Gateway,利用 Thrift 序列化技术,支持 C++,PHP,Python 等多种语言,适合其他异构系统在线访问 HBase 表数据

4. REST Gateway,支持 REST 风格的 Http API 访问 HBase, 解除了语言限制

5. Pig,可以使用 Pig Latin 流式编程语言来操作 HBase 中的数据,和 Hive 类似,本质最终也是编译成 MapReduce Job 来处理 HBase 表数据,适合做数据统计

6. Hive,当前 Hive 的 Release 版本尚没有加入对 HBase 的支持,但在下一个版本 Hive 0.7.0 中将会支持 HBase,可以使用类似 SQL 语言来访问 HBase

HBase 数据模型 Table & Column Family

Row Key

Timestamp

Column Family

URI

Parser

r1

t3

url=http://

title=

t2

host=com

t1

r2

t5

url=http://

content=每天…

t4

host=com

Ø Row Key: 行键,Table 的主键,Table 中的记录默认按照 Row Key 升序排序

Ø Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的 version number

Ø Column Family:列簇,Table 在水平方向有一个或者多个 Column Family 组成,一个 Column Family 中可以由任意多个 Column 组成,即 Column Family 支持动态扩展,无需预先定义 Column 的数量以及类型,所有 Column 均以二进制格式存储,用户需要自行进行类型转换。

Table & Region

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

-ROOT- && .META. Table

HBase 中有两张特殊的 Table,-ROOT-和.META.

.META.:记录了用户表的 Region 信息,.META.可以有多个 region

-ROOT-:记录了.META.表的 Region 信息,-ROOT-只有一个 region

Ø Zookeeper 中记录了-ROOT-表的 location

Client 访问用户数据之前需要首先访问 zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,中间需要多次网络操作,不过 client 端会做 cache 缓存。

MapReduce on HBase

在 HBase 系统上运行批处理运算,最方便和实用的模型依然是 MapReduce,如下图:

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

HBase 系统架构

Client

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

1 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 存储是 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 的过程:

在理解了上述 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,完成数据恢复。

存储格式

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 的存储格式:

首先 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 部分没有这么复杂的结构,就是纯粹的二进制数据了。

HLogFile

上图中示意了 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,可参见上文描述。

文档

HBase 最新官方参考指南中文版(见参考资料)

HBase Reference Guide

(0)
时间不会说谎  的头像时间不会说谎  

相关推荐

  • 遮光罩怎么反扣,使用技巧详解

    遮光罩是一种常见的窗帘配件,可以有效地遮挡光线,保护隐私。然而,有些人在安装遮光罩时可能会遇到一个问题,那就是遮光罩怎么反扣?这篇文章将向大家介绍一些使用技巧,帮助大家轻松反扣遮光罩。一、遮光罩的反扣原理首先,我们需要了解遮光罩的反扣原

    2023年11月25日
  • 适合大学生用的笔记本电脑

    非计算机、设计等专业的大学生,一般选择轻薄本即可,这类笔记本性能足够而且性价比较高。计算机及设计则配置高有限,选购思路可以参考:轻薄有颜,放得进书包;性能不俗,玩游戏不卡;屏幕显色…

  • 增值税暂行条例实施细则2022(增值税暂行条例实施细则2022书籍)

    本篇文章给大家谈谈增值税暂行条例实施细则2022,以及增值税暂行条例实施细则2022书籍对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录一览:1、小规模2022年增值税政策2、2022年小规模免增值税政策3、卖房增值税202

    2023年10月18日
  • 企业所得税年度汇算清缴(企业所得税年度汇算清缴怎么操作)

    今天给各位分享企业所得税年度汇算清缴的知识,其中也会对企业所得税年度汇算清缴怎么操作进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览:1、企业所得税汇算清缴怎么做2、企业所得税汇算清缴的范围包括哪些?3、

    2023年10月17日
  • 华为Nova12如何开启地震预警功能?

    前一段时间,国内多个地区出现了地震,这让全国人民都关心不已。目前绝大部分手机都搭载了地震预警功能,可以在地震发生之后第一时间进行预警,让大家可以拥有更多的逃生时间。但很多小伙伴都不知道在哪开启,下面就让小编为大家介绍一下华为Nova12开启

    2024年1月24日
  • 腾达无线网卡驱动为什么安装失败,如何解决安装问题

    关键词:腾达无线网卡驱动无线网卡是我们连接互联网的重要设备之一,而腾达无线网卡因为其稳定性和性价比备受用户青睐。但是,有时候我们在安装腾达无线网卡驱动的时候会遇到一些问题,比如安装失败。那么,腾达无线网卡驱动为什么安装失败?该如何解决安装

    2023年10月28日
  • 华为AI音箱怎么重启,简单易懂的步骤教程

    华为AI音箱是一款智能音箱,它不仅可以播放音乐,还可以与您的智能家居设备互动,甚至可以回答您的问题。然而,有时候您可能会遇到一些问题,例如音箱无法连接到互联网或出现其他故障。在这种情况下,重启华为AI音箱可能是解决问题的最佳方法。本文将为您

    2023年11月23日
  • 闪光灯设置,如何拍出更好的照片

    在拍摄照片时,闪光灯是一个非常重要的元素。它可以帮助我们在光线不足的情况下拍出更好的照片。但是,如果你不知道如何正确地设置闪光灯,那么你的照片可能会出现一些问题,比如过曝或者模糊。在本文中,我们将会介绍如何正确地设置闪光灯,以拍出更好的照片

    2023年11月18日
  • 魔兽奥山试炼场任务怎么做,详细攻略分享

    作为一款备受玩家喜爱的游戏,《魔兽世界》中的任务是游戏中不可或缺的一部分。其中,奥山试炼场任务是许多玩家都非常关注的一个任务。那么,魔兽奥山试炼场任务怎么做呢?下面就来详细分享一下攻略。一、任务简介奥山试炼场任务是一个非常有趣的任务,它

    2023年11月6日
  • 黑苹果博通无线网卡驱动,如何安装并使其正常工作

    在黑苹果系统中,驱动是一个非常重要的问题,因为黑苹果系统并不像正常的Mac系统那样可以直接使用所有硬件设备。其中,无线网卡驱动就是一个非常常见的问题。在本文中,我们将会介绍如何安装和使用黑苹果博通无线网卡驱动。一、下载驱动程序首先,我们

    2023年12月18日
  • 三星note系列最后一代,有哪些值得期待的新特性

    本文目录一览1.更大的屏幕2.更强大的处理器3.更好的相机4.更长的电池续航5.更快的充电速度结论三星Note系列一直以来是三星旗下最受欢迎的智能手机之一。而三星Note系列最后一代即将发布,许多人都对它的新特性充满期待

    2023年11月26日
  • nba2k14配置够了为什么会卡,如何解决游戏卡顿问题

    作为一款备受欢迎的篮球游戏,《NBA2K14》在发行后迅速赢得了玩家们的喜爱。然而,有些玩家在游戏过程中遇到了卡顿的问题,尤其是在配置足够的情况下,这一问题更加令人不解。在本文中,我们将探讨NBA2K14配置够了为什么会卡的原因,并提供解决

    2023年10月16日
  • 艾肯声卡用安装驱动吗,必须安装吗?如何安装?

    艾肯声卡是一种专业的声卡设备,它可以为音乐制作、录音、演出等领域提供高质量的音频处理和输出。在使用艾肯声卡的过程中,很多人会遇到一个问题:是否需要安装驱动程序?如果需要,如何安装?本文将为大家解答这些问题。一、艾肯声卡是否需要安装驱动程序

    2023年11月4日
  • 为什么现在硬盘都是5400转,为什么这种转速已经足够

    随着科技的不断发展,硬盘的存储容量越来越大,但是硬盘的转速却不再像以前那样高了。现在,大多数硬盘的转速都是5400转。这让很多人感到困惑,为什么现在硬盘都是5400转?这种转速已经足够吗?本文将为您揭开这个谜团。一、为什么现在硬盘都是54

    2023年11月7日
  • 墨盒的使用寿命是多久

    一般墨盒的有效期两年,但是要在不打开包装,放阴凉处的情况可以保质两年,现代墨盒主要指的是喷墨打印机中用来存储打印墨水,并最终完成打印的部件。 根据打印机和墨盒类型的不同,墨水通常可…

发表回复

登录后才能评论