HBase简介与环境部署

5.1 HBase简介&在Hadoop生态中的地位

5.1.1 什么是HBase
  • HBase是一个分布式的、面向列的开源数据库
  • HBase是Google BigTable的开源实现
  • HBase不同于一般的关系数据库, 适合非结构化数据存储
5.1.2 BigTable
  • BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。
    • 适合大规模海量数据,PB级数据;
    • 分布式、并发数据处理,效率极高;
    • 易于扩展,支持动态伸缩
    • 适用于廉价设备;
    • 不适用于传统关系型数据的存储;
5.1.3 面向列的数据库

HBase 与 传统关系数据库的区别

HBase关系型数据库
数据库大小 PB级别 GB TB
数据类型 Bytes 丰富的数据类型
事务支持 ACID只支持单个Row级别 全面的ACID支持, 对Row和表
索引 只支持Row-key 支持
吞吐量 百万写入/秒 数千写入/秒
  • 关系型数据库中数据示例
IDFILE NAMEFILE PATHFILE TYPEFILE SIZECREATOR
1 file1.txt /home txt 1024 tom
2 file2.txt /home/pics jpg 5032 jerry
  • 同样数据保存到列式数据库中
RowKeyFILE INFOSAVE INFO
1 name:file1.txt type:txt size:1024path:/home/pics creator:Jerry
2 name:file2.jpg type:jpg size:5032 path:/home creator:Tom
  • 行数据库&列数据库存储方式比较

在这里插入图片描述

5.1.4 什么是非结构化数据存储
  • 结构化数据
    • 适合用二维表来展示的数据
  • 非结构化数据
    • 非结构化数据是数据结构不规则或不完整
    • 没有预定义的数据模型
    • 不方便用数据库二维逻辑表来表现
    • 办公文档、文本、图片、XML, HTML、各类报表、图像和音频/视频信息等
5.1.5 HBase在Hadoop生态中的地位
  • HBase是Apache基金会顶级项目

  • HBase基于HDFS进行数据存储

  • HBase可以存储超大数据并适合用来进行大数据的实时查询

    在这里插入图片描述

5.1.6 HBase与HDFS
  • HBase建立在Hadoop文件系统上, 利用了HDFS的容错能力
  • HBase提供对数据的随机实时读/写访问功能
  • HBase内部使用哈希表, 并存储索引, 可以快速查找HDFS中数据
5.1.7 HBase使用场景
  • 瞬间写入量很大
  • 大量数据需要长期保存, 且数量会持续增长
  • HBase不适合有join, 多级索引, 表关系复杂的数据模型

##六 HBase的数据模型

  • NameSpace: 关系型数据库的"数据库"(database)

  • 表(table):用于存储管理数据,具有稀疏的、面向列的特点。HBase中的每一张表,就是所谓的大表(Bigtable),可以有上亿行,上百万列。对于为值为空的列,并不占用存储空间,因此表可以设计的非常稀疏。

  • 行(Row):在表里面,每一行代表着一个数据对象,每一行都是以一个行键(Row Key)来进行唯一标识的, 行键并没有什么特定的数据类型, 以二进制的字节来存储

  • 列(Column): HBase的列由 Column family 和 Column qualifier 组成, 由冒号: 进行行间隔, 如 family: qualifier

  • 行键(RowKey):类似于MySQL中的主键,HBase根据行键来快速检索数据,一个行键对应一条记录。与MySQL主键不同的是,HBase的行键是天然固有的,每一行数据都存在行键。

  • 列族(ColumnFamily):是列的集合。列族在表定义时需要指定,而列在插入数据时动态指定。列中的数据都是以二进制形式存在,没有数据类型。在物理存储结构上,每个表中的每个列族单独以一个文件存储。一个表可以有多个列簇。

  • 列修饰符(Column Qualifier) : 列族中的数据通过列标识来进行映射, 可以理解为一个键值对(key-value), 列修饰符(Column Qualifier) 就是key 对应关系型数据库的列

  • 时间戳(TimeStamp):是列的一个属性,是一个64位整数。由行键和列确定的单元格,可以存储多个数据,每个数据含有时间戳属性,数据具有版本特性。可根据版本(VERSIONS)或时间戳来指定查询历史版本数据,如果都不指定,则默认返回最新版本的数据。

  • 区域(Region):HBase自动把表水平划分成的多个区域,划分的区域随着数据的增大而增多。

  • HBase 支持特定场景下的 ACID,即对行级别的 操作保证完全的 ACID

  • cap定理
    • 分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

      • 一致性(所有节点在同一时间具有相同的数据)

        在这里插入图片描述

      • 可用性(保证每个请求不管成功或失败都有响应,但不保证获取的数据的正确性)

      • 分区容错性(系统中任意信息的丢失或失败不会影响系统的运行,系统如果不能在某个时限内达成数据一致性,就必须在上面两个操作之间做出选择)

      在这里插入图片描述

      hbase是CAP中的CP系统,即hbase是强一致性的

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐