hbase 基础 —— 概念简介
Posted lemos
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase 基础 —— 概念简介相关的知识,希望对你有一定的参考价值。
1. 简要介绍
HBase 是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的 BigTable 建模,实现的编程语言为 Java。它是 Apache 软件基金会的 Hadoop 项目的一部分,运行于 HDFS 文件系统之上,为 Hadoop 提供类似于 BigTable 规模的服务,可以存储海量稀疏的数据,并具备一定的容错性、高可靠性及伸缩性。主要应用场景是实时随机读写超大规模的数据。
2. 数据模型
- 行健(Row Key):表的主键,表中的记录默认按照行健升序排序
- 时间戳(Timestamp):每次数据操作对应的时间戳,可以看作是数据的版本号
- 列族(Column Family):表在水平方向有一个或者多个列族组成,一个列族中可以由任意多个列组成,列族支持动态扩展,无需预先定义列的数量以及类型,所有列均以二进制格式存储,用户需要自行进行类型转换。所有的列族成员的前缀是相同的,例如
abc:a1
和abc:a2
两个列都属于abc
这个列族。 - 表和区域(Table&Region):当表随着记录数不断增加而变大后,会逐渐分裂成多份,成为区域,一个区域是对表的水平划分,不同的区域会被 Master 分配给相应的 RegionServer 进行管理
- 单元格(Cell):表存储数据的单元。由{行健,列(列族:标签),时间戳}唯一确定,其中的数据是没有类型的,以二进制的形式存储。
3. 基础架构
如上图所示,该架构中只有一个 Master 节点,称 HMaster,还有多台 RegionServer 成为 HRegionServer,每个 RegionServer 包含多个 Region。
- HBase 访问接口:Java,REST,Thrift 等.
- Master:集群的管理服务器,为 RegionServer 分配 Region,负责 RegionServer 的负载均衡,处理 schema 更新请求.
- RegionServer:管理 HBase 的数据存储,维护 Region,处理 IO 请求。
- Zookeeper:保证集群的高可用性、存储 Region 的寻址入口,并实时监控 RegionServer 的状态,存储 HBase 的 Schema。
可以看到,client 访问 hbase 上数据的过程并不需要 Master 参与(寻址访问 Zookeeper 和 RegionServer,数据读写访问 RegionServer),Master 仅仅维护 Table 和 Region 的元数据信息,负载很低。
4. Hbase 访问接口
- Native Java API,最常规和高效的访问方式,适合 Hadoop MapReduce Job 并行批处理 HBase 表数据。
- HBase Shell,HBase 的命令行工具,最简单的接口,适合 HBase 管理使用。
- Thrift Gateway,利用 Thrift 序列化技术,支持 C++,php,Python 等多种语言,适合其他异构系统在线访问 HBase 表数据。
- REST Gateway,支持 REST 风格的 Http API 访问 HBase, 解除了语言限制。
- Pig,可以使用 Pig Latin 流式编程语言来操作 HBase 中的数据,和 Hive 类似,本质最终也是编译成 MapReduce Job 来处理 HBase 表数据,适合做数据统计。
5. Hbase 存储格式
HBase 中的所有数据文件都存储在 Hadoop HDFS 文件系统上,主要包括上述提出的两种文件类型:
- HFile, HBase 中 KeyValue 数据的存储格式,HFile 是 Hadoop 的二进制格式文件,实际上 StoreFile 就是对 HFile 做了轻量级包装,即 StoreFile 底层就是 HFile。
- HLogFile,HBase 中 WAL(Write Ahead Log) 的存储格式,物理上是 Hadoop 的 Sequence File。
6. 应用场景
HBase 的优势主要在以下几方面:
- 海量数据存储
- 快速随机访问
- 大量写操作的应用
常见的应用场景:
- 互联网搜索引擎数据存储(BigTable 要解决的问题)
- 审计日志系统
- 实时系统
- 消息中心
- 内容服务系统
233
以上是关于hbase 基础 —— 概念简介的主要内容,如果未能解决你的问题,请参考以下文章