- Hbase是一个构建在HDFS上的,具有高可靠、高性能、面向列、可伸缩的分布式数据库。Hbase是Apache Hadoop生态系统中的重要一员,只要勇于海量结构化数据存储。Hbase将数据按照表、行和列进行存储。
| Hadoop生态 | Google生态 | 描述 |
|---|---|---|
| MapReduce | MapReduce | 模仿了Google的MapReduce |
| HDFS | GFS | 参考并简化了GFS关于并发的思路 |
| Hbase | BigTable | 可以理解为Hbase是开源的BigTable版本 |
| Zookeeper | Chubby | Chubby非开源,都是分布式推举算法的封装 |
| 特点 | 解释 |
|---|---|
| 大 | 一个表可以有数十亿行,上百万列 |
| 无模式 | 每行都有一个可排序的逐渐和任意多个列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列 |
| 面向列 | 面向列(族)的存储和权限控制,列(族)独立检索 |
| 稀疏性 | 对于NULL的列,不占存储空间 |
| 数据多版本 | 每个单元中可以有多个版本,默认情况版本号自动分配(用户也可以指定) |
| 数据类型单一 | Hbase中的数据都是字节,用户自己;来解释数据类型 |
| Hbase | RDBMS | |
|---|---|---|
| 数据库大小 | PB | GB、TB |
| 列数量、动态列 | 支持数十亿行,上百万列,支持动态列 | 列数量少,并需手动修改表结构 |
| 稀疏性 | NULL值不占空间 | NULL值占空间 |
| 数据多版本 | 支持 | 不支持 |
| 数据类型 | 类型单一,都是字节 | 数据类型多样 |
| 表联接 | 不支持 | 支持 |
| 索引 | 仅支持rowkey索引 | 支持主键及其他列的索引 |
| 自动分区 | 之处,在表增长的时候,表会自动分裂 | 需手动分区 |
| 事务的支持 | ACID只支持单个Row级别 | ACID全面支持Row和表 |
- Row Key:
主键。表内唯一Column Family:
列族。包含一个或多个列Column:
列。隶属于列族Version Number:
版本号。每个RowKey内唯一
默认值为系统的时间。用户可指定
类型为LongValue(Cell):
单元格。存储值的地方Hbase Schema可以有多个Table每个表可有多个Column FamilyHbase可以有动态列
Hbase以表的形式存储数据。表由行和列组成。列划分为若干个列族。
空值不被存储。
- 每个Column Family存储在HDFS上单独的一个文件中。Key和Version Number在每个Column Family中均有一份。空值不会被保存。
- Table中的所有行都是按照RowKey的字典序排序Table在行的方向上分隔为多个Region(区域)
Region按大小分隔,每个表开始只有一个Region,苏子和数据增多,Region不断增大,到一定阈值之后,会分拆为两个等份的新的Region。Region是Hbase中分布式存储和负载均衡的最小单元,最小单元就表示不同的Hregion可以分布在不同的Region Server上。但一个Region不会拆分到多个Region Server上。Region虽然是分布式存储的最小单元,但并不是存储的最小单元。事实上,Region由一个或多个Store组成,每个Store保存一个Columns Family。每个Store又由一个memStore和0至多个StoreFile组成。
Hbase采用Master/Slave架构搭建集群,它隶属于Hadoop生态系统,由以下类型节点组成:HMaster、HRegionServer、ZooKeeper,底层数据存储在HDFS中,也涉及到HDFS的NameNode、DataNode等。
总体结构:
- Client:
包含访问Hbase的接口,并维护cache来加快对Hbase的访问ZooKeeper:
保证任何时候,急群众只有一个master
存储所有Region的寻址入口
实时监控Region server的上下线信息。并实时通知给Master
存储Hbase的schema和table元数据Master
为Region server分配region
负责Region server的负载均衡
发现时效的Refion server并重新分配其上的region
管理用户对table的增删改查操作Region Server
Region server维护region,处理对这些region的IO请求
Region server负责切分在运行过程中变得过大的region
- Native Java APIHbase ShellThrift GatewayREST GatewayMapReduce使用Pig/Hive处理Hbase数据
具体可参考 Hbase访问方式之Java API
关于转载:允许非商业用途转载,注明出处和链接即可。



