阅读 17

Hbase 读书笔记——概述

bigtable:解决Google内部海量结构化数据的存储以及高效读写问题。
HBase是一个稀疏的、分布式的、多维排序的Map

1. 逻辑视图

  1. table:表,一个表包含多行数据。
    2.row:行,一行数据包含一个唯一标识rowkey、多个column以及对应的值。
    3.column:列,与关系型数据库中的列不同,HBase中的column由column family(列簇)以及qualif ier(列名)两部分组成,
  2. timestamp:时间戳,每个cell在写入HBase的时候都会默认分配一个时间戳作为该cell的版本
  3. cell:单元格,由五元组(row, column, timestamp, type, value)组成的结构,其中type表示Put/Delete这样的操作类型,timestamp代表这个cell的版本
image.png

HBase的逻辑视图是比较容易理解的,需要注意的是,HBase引入了列簇的概念,列簇下的列可以动态扩展;另外,HBase使用时间戳实现了数据的多版本支持。

HBase这个Map系统却并不简单,有很多限定词——稀疏的、分布式的、持久性的、多维的以及排序的。

不同,HBase中Map的key是一个复合键,由rowkey、column family、qualif ier、type以及timestamp组成,value即为cell的值

<[rowkey,column family,qualifier,type,timestamp],cell value>

2.物理存储:

列簇式存储:从概念上来说,列簇式存储介于行式存储和列式存储之间

3. 体系结构

  • master-slave 架构


    image.png

master节点,regionserver负责数据读写,hdfs存储数据。

*Hbase 客户端
a. HBase客户端(Client)提供了Shell命令行接口、原生Java API编程接口、Thrift/REST API编程接口以及MapReduce编程接口
b. HBase客户端访问数据行之前,首先需要通过元数据表定位目标数据所在RegionServer,之后才会发送请求到该RegionServer。同时这些元数据会被缓存在客户端本地,以方便之后的请求访问。如果集群RegionServer发生宕机或者执行了负载均衡等,从而导致数据分片发生迁移,客户端需要重新请求最新的元数据并缓存在本地。

  • Zookeeper
    a.•实现Master高可用
    b. 管理系统核心元数据
    c. 参与RegionServer宕机恢复
    d. 实现分布式表锁

  • Master
    Master主要负责HBase系统的各种管理工作
    a. 处理用户的各种管理请求,包括建表、修改表、权限操作、切分表、合并数据分片以及Compaction等。
    b. 管理集群中所有RegionServer,包括RegionServer中Region的负载均衡、RegionServer的宕机恢复以及Region的迁移等。
    c. 清理过期日志以及文件,Master会每隔一段时间检查HDFS中HLog是否过期、HFile是否已经被删除,并在过期之后将其删除。

  • RegionServer
    RegionServer主要用来响应用户的IO请求,是HBase中最核心的模块,由WAL(HLog)、BlockCache以及多个Region构成。

a. WAL(HLog)
其一,用于实现数据的高可靠性,HBase数据随机写入时,并非直接写入HFile数据文件,而是先写入缓存,再异步刷新落盘。
其二,用于实现HBase集群间主从复制,通过回放主集群推送过来的HLog日志实现主从复制。

b. BlockCache:HBase系统中的读缓存
BlockCache缓存对象是一系列Block块,一个Block默认为64K,由物理上相邻的多个KV数据组成。BlockCache同时利用了空间局部性和时间局部性原理。
附近数据,和可能会再次访问的数据

c.Region:数据表的一个分片

4. Hbase优缺点

1.优点:

  • 容量巨大:HBase的单表可以支持千亿行、百万列的数据规模,数据容量可以达到TB甚至PB级别
  • 良好的可扩展性:HBase集群可以非常方便地实现集群容量扩展,主要包括数据存储节点扩展以及读写服务节点扩展
  • 稀疏性:HBase支持大量稀疏存储,即允许大量列值为空,并不占用任何存储空间
  • 高性能:HBase目前主要擅长于OLTP场景,数据写操作性能强劲,对于随机单点读以及小范围的扫描读,其性能也能够得到保证
  • 多版本:HBase支持多版本特性,即一个KV可以同时保留多个版本,用户可以根据需要选择最新版本或者某个历史版本
  • 支持过期:HBase支持TTL过期特性,用户只需要设置过期时间,超过TTL的数据就会被自动清理,不需要用户写程序手动删除。
  • hadoop原生支持

2. 缺点:

HBase不能适用于所有应用场景

  • HBase本身不支持很复杂的聚合运算(如Join、GroupBy等)
  • HBase本身并没有实现二级索引功能,所以不支持二级索引查找
  • HBase原生不支持全局跨行事务,只支持单行事务模型

作者:ZYvette

原文链接:https://www.jianshu.com/p/f9122c2dba9c

文章分类
后端
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 gxwowoo@163.com 举报,一经查实,本站将立刻删除。
相关推荐