Hbase 整理

2022-11-10 21:27:59 浏览数 (1)

Hbase简介

  • HBase是一个开源的非关系型分布式数据库( NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java
  • HBase是一个分布式存储系统,具有高可靠性、高性能、面向列、可伸缩(增加或减少硬件的数量)的特点。

高可靠:1.底层文件存储采用的是HDFS,具有副本机制。

高性能:1.分布式系统,通过并行度提高性能

2.通过表的切分,实现与store的存储

3. HBase利用Hadoop HDFS作为其文件存储系统

  • HBase适合具有如下需求的应用:
    • 海量数据( TBPB
    • 高吞吐量
    • 需要在海量数据中实现高效的随机读取
    • 需要很好的性能伸缩能力
    • 能够同时处理结构化和非结构化的数据
    • 不需要完全拥有传统关系型数据库所具备的ACID特性

Hbase 逻辑模型

  1. 基本结构
    • 表(table) 字符串
    • 行(row) 行由行健(rowkey)唯一标识
    • 列族(column failmy)行的数据按列族分组cf,创建表的时候定义,不轻易修改
    • 列限定符(column qualifier)列里面的数据定位通过列限定符
    • 单元(cell)行健,列族和列限定符一起确定一个单元,value
    • 时间版本(vesion)单元值有时间版本,用时间戳来标识默认1个。
  2. 主键(Row Key)
    • 用来检索记录的主键。
    • 主键为任意字符串,最大长度为64kb,按字典顺序存储,在HBase内部保存为字节数组
    • 访问HBase 表中的行,只有三种方式

– 通过单个Row Key访问  

– 通过Row Key的range 

– 全表扫描

  1. 列族(Column Family)
  • 列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型。
  • 列族是一些列的集合。
  • 一个列族所有列成员是有着相同的前缀。比如,列courses:history 和 courses:math都是 列族 courses的成员.冒号(:)是列族的分隔符,用来区分前缀和列名
  1. 时间戳与存储单元(Timestamp and Cell)
  • HBase中通过row和columns确定的为一个存贮单元称为cell。每个 cell都保存着同一份数据的多个版本。
  • 在写入数据时,时间戳可以由HBase自动赋值(当前系统时间精确到毫秒),也可以显示赋值。
  • 每个cell中,不同版本的数据按照时间的倒序排序。

    {row, column, version}元组就是一个HBase中的一个 cell。

0 人点赞