HBase(一) 介绍 数据模型概念 rowkey

1.介绍

是 Apache Hadoop 的数据库,是建 立在 HDFS 之上,被设计用来提供高可靠性、高性能、列存储、可伸缩、多版本的 NoSQL 的分布式数据存储系统,实现对大型数据的实时、随机的读写访问。
特点:
  • 它介于 NoSQL 和 RDBMS 之间,仅能通过主键(rowkey)和主键的 range 来检索数据
  • HBase 查询数据功能很简单,不支持 join 等复杂操作
  • 不支持复杂的事务,只支持行级事务(可通过 hive 支持来实现多表 join 等复杂操作)。
  • HBase 中支持的数据类型:byte[](底层所有数据的存储都是字节数组)
  • 主要用来存储结构化和半结构化的松散数据。
 
表的特点:
  • 大:一个表可以有上十亿行,上百万列
  • 面向列:面向列(族)的存储和权限控制,列(簇)独立检索。
  • 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
  • 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一 张表中不同的行可以有截然不同的列
 

2.数据模型概念

HBase以表的形式存储数据。表由行和列族组成,列族由若干个列组成。视图如下
 
数据模型关键概念:
(1)行键(RowKey)
  • rowKey对HBase的性能影响非常大,行键是字节数组,任何字符串都是可以作为行键
  • 数据按照RowKey的字节序(byte order)字典顺序来排序存储的
  • 所有对表的访问都要通过行键(单个RowKey访问,或者RowKey范围访问,或全表扫描)
(2)列族(ColumnFamily)
  • 列族必须在表定义时给出:
  • 每个列族可以有一个或多个列,列不需要在表定义时给出,新的列可以随后按需动态加入,一般使用1个列族,官方推荐小于等于3个。
  • 数据按列族存储,适合数据分析的情形
(3)列
  • 类似数据库的列
(4)时间戳(TimeStamp)
  • 时间戳是HBase实现多版本额度关键,在HBase中使用不同的时间戳来标识相同rowKey对应的不同版本的数据。
  • HBase 中通过 rowkey 和 columns 确定的为一个存储单元称为 cell。每个 cell 都保存着同一份 数据的多个版本。版本通过时间戳来索引。
  • 每个 cell 中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
为了避免数据存在过多版本造成的存储负担,HBase提供了两种数据版本回收方式:
  • 保存数据的最后 n 个版本
  • 保存最近一段时间内的版本(设置数据的生命周期 TTL)
 
(5)单元格(Cell)
  • Cell由行键,列族,限定符,时间戳唯一决定,{rowkey, column( = + ), version}
  • Cell中的数据是没有类型的,全部以字节码形式存储
 

3.元数据表hbase:meta

HBase中有张存放用户表元数据的表,名为hbase:meta
客户端访问数据的流程:
Client -> Zookeeper -> hbase:meta -> User table
Client访问Zookeeper,查找到hbase:meta表的存放位置,通过hbase:meta获取存放数据的Region信息(找到Region Server),通过Region Server获取查找的数据
  • hbase:meta:记录用户表的Region信息,同时,hbase:meta也可以有多个region
  • ZooKeeper中记录了hbase:meta表的location
 
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值