HBase学习笔记

HBase

HBase是一个面向列(老师讲的面向列,但是应该不是)的分布式数据库,主要用于存储非结构化和半结构化的数据。

HBase 数据模型

HBase是一个稀疏、多维度、排序的映射表,其索引是行键(Row Key)、列族(Column Family)、列限定符(Column Qualifier)、时间戳(Timestamp)。

例如:

ID(行键)Version(时间戳)Info(列族)
姓名(列限定符)联系方式
100012012张三110
2015张三114
100022011李四119
2016李四120

1.表
利用表来组织数据,由行与列组成,列同时又被分为多个列族。

2.行
表由若干行组成,每个行由行键进行标识,行键(最大64kb,实际运用过程中:10-100字节)按照字典顺序排序。

3.列族
表中的列名以列族作为前缀,每个“列族”都可以有多个列(column),列族是基本的访问控制单元。

4.列限定符
数据在列族中通过列限定符定位,列限定符没有数据类型。

5.单元格
由行、列族和列限定符来确定唯一的一个单元格。单元格中的存储的数据同样没有数据类型,所有的数据都是未解析的字节数组。单元格可以有多个内容,这些内容对应不同的时-间戳,

6.时间戳
每个单元格都可能存在着多个版本的内容,这些不同的版本由时间戳来进行区分。

HBase访问接口

API类型特点适用场合
Native Java API最常规和高效的访问方式适合Hadoop MapReduce Job并行批处理HBase表数据
HBase ShellHBase的命令行工具,最简单的接口适合HBase管理使用
Thrift Gateway利用Thrift序列化技术,支持C++,PHP,Python等多种语言适合其他异构系统在线访问HBase表数据
REST Gateway解除了语言限制支持REST 风格的Http API访问HBase
Pig可以使用Pig Latin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduce Job来处理HBase表数据适合做数据统计
Hive简单当前Hive的Release版本尚没有加入对HBase的支持,但在下一个版本Hive 0.7.0中将会支持HBase,可以使用类似SQL语言来访问HBase

存储格式

HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括两种文件类型:

  1. HFile:StoreFile在底层的实现方式,HFile是Hadoop的二进制文件,Hfile数据块常用压缩方式存储。

  2. HLog File,HBase中WAL(Write Ahead Log)预写试日志,用来做灾难恢复,是一种Hadoop的Sequence File。

HBase 的功能组件

库函数:链接到每个客户端;
主服务器Master:负责管理和维护表的分区信息;
Region服务器:负责管理和维护分配给自己的Region,处理来自客户端的读写请求;

HBase运行机制

HBase系统架构

  • 客户端
  • Zookeeper服务器
  • Master主服务器
  • Region服务器
Zookeeper

帮助协调多台机器组成的集群提供稳定可靠的协同服务。Zookeper中保存了-ROOT-表的地址和Master。

Master服务器

负责表与Region的管理工作。

Region服务器

HBase中最核心的模块,管理和维护分配给自己的Region,响应Client的读写请求。

Region

HBase表中的的数据都是通过行键进行划分维护的,当数据量非常庞大时,就不能将所有的数据都存储在同一机器上,需要将数据分布存储于多台机器之中。所以对需要对行键进行划分区间,一个Region管理一个区间内的数据。Region的默认大小是100M-200M。一个RegionServer又管理多个(10~1000)个Region。

HBase读流程

(1)客户端先从Zookeeper中得到.META表Region的位置,然后再读取.META表的数据。
(2)根据namespace、表名和行键在meta表中找到对应的region信息。(三层定位操作)
(3)找到对应的RegionServer。
(4)查找对应的Region
(5)先从Memstore(缓存)中找数据,如果没有找到,再到StoreFile中去读。

HBase写流程

(1)Client先访问Zookeeper得到meta表Region的位置,然后再读取.META表的数据。
(2)根据namespace、表名和行键在meta表中找到对应的region信息。
(3)找到对应的RegionServer。
(4)Client向RegionServer发出写请求,RegionServer先将操作和数据写入HLog(预写日志),再将数据写入MemStore。当MemStore中的数据丢失、损坏,可以从HLog上恢复。
(5)MemStore达到一个阈值将数据生成为一个StoreFile文件。
(6)当Store中StoreFile的数量超过阈值时,将若干小StoreFile合并(Compact)为一个大StoreFile。
(7) 但是当StoreFile越来越大时,又会触发Split操作,把当前的StoreFile分成2个,相当于把一个Region分成两个Region。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值