物联网架构之HBase

**

物联网架构之HBase

技能目标

  • 了解 HBase 体系结构
  • 理解 HBase 数据模型
  • 掌握 HBase 的安装
  • 会使用 HBase Shell 操作 HBase

一、案例概述

在这里插入图片描述
**

二、案例前置知识点

**

HBase简介

HBase 是数据库,但并不是传统的关系型数据库,HBase 不使用以行存储的关系型结构存储数据,而是以键值对方式按列存储,由此可以认为它是非关系型数据库 NoSQL(Not Only SQL)中的一个重要代表。

在这里插入图片描述
NoSQL目前并没有明确的范围和定义,主要特点是通常用于大规模数据的存储、没有预定义的模式(如表结构)、表和表之间没有复杂的关系。

总体上可将 NoSQL 数据库分为以下四类:

  • 基于列存储的类型
  • 基于文档存储的类型
  • 基于键值对存储的类型
  • 基于图形数据存储的类型

通常,人们将 HBase 归为基于列存储类型。在 NoSQL 领域,HBase 本身不是最优秀。但得益于与 Hadoop 的整合,给它带来了更广阔的发展空间。HBase 本质上只有插入操作,更新和删除都是使用插入方式完成,这是由底层 HDFS 流式访问特性(一次写入、多次读取)决定的。所以,在更新时总是插入一个带时间戳的新行,而删除时插入一个带有删除标记的新行。每一次的插入都有一个时间戳标记,每次都是一个新的版本HBase 会保留一定数量的版本(这个值是可以设定的)。如果在查询时提供时间戳,则返回距离该时间最近的版本;否则返回离现在最近的版本。

**

HBase和HDFS的关系

在这里插入图片描述

**

HBase体系结构

在这里插入图片描述在这里插入图片描述

**

HRegion

HBase 使用表(Table)存储数据集,表由行和列组成,这与关系型数据库类似。但是,当表的大小超过设定值时,HBase 会自动将表划分为不同的区域(Region)。每个区域称为 HRegion,它是 HBase 集群上分布式存储和负载均衡的最小单位,在这点上表和 HRegion 类似于 HDFS 中文件与文件块的概念。一个 HRegion 中保存一个表中一段连续的数据,通过表名和主键范围(开始主键~结束主键)区分每一个HRegion。

在这里插入图片描述
一开始,一个表只有一个 Hregion。随着 HRegion 开始变大,直到超出设定的大小阈值,便会在某行的边界上把表分成两个大小基本相同的 HRegion,称为HRegion 分裂。如下图所示
在这里插入图片描述

每个 HRegion 由多个 HStore 组成,每个 HStore 对应表中一个列族(ColumnFamily)的存储,列族在后面还会详细介绍。HStore 由两部分组成:MemStore 和StoreFile。用户写入的数据首先放入 MemStore,当 MemStore 满了以后再刷入(flush)StoreFile。StoreFile 是 HBase 中的最小存储单元,底层最终由 HFile 实现,而 HFile是键值对数据的存储格式,实质是 HDFS 的二进制格式文件。HBase 中不能直接更新和删除数据,所有的数据均通过追加的方式进行更新。当StoreFile 的 数 量 超 过 设 定 的 阈 值 将 触 发 合 并 操 作 , 将 多 个 StoreFile 合 并 为 一 个StoreFile,此时进行数据的更新和删除。
在这里插入图片描述

**

HRegionServer

HRegionServer 负责响应用户 I/O 请求,向 HDFS 中读写数据,一台机器上只运行一个 HRegionServer。HRegionServer 包含两部分:HLog 部分和 HRegion 部分。其中 HLog 用于存储数据日志,实质是 HDFS 的 Sequence File。到达 HRegion的写操作首先被追加到日志中,然后才被加入内存中的 MemStore。HLog 文件主要用于故障恢复。例如某台 HRegionServer 发生故障,那么它所维护的 HRegion 会被重新分配到新的机器上,新的 HRegionServer 在加载 HRegion 的时候可以通过 HLog对数据进行恢复。

HRegion 部分由多个 HRegion 组成,每个 HRegion 对应了表中的一个分块,并且每一个 HRegion 只会被一个 HRegionServer 管理。

在这里插入图片描述
在这里插入图片描述

**

HMaster

每台 HRegionServer 都会和 HMaster 服务器通信,HMaster 的主要任务就是告诉每个 HRegionServer 它要维护的 HRegion。

在 HBase 中可以启动多个 HMaster,通过 ZooKeeper 的 Master 选举机制来保证系统中总有一个 Master 在运行。HMaster 的具体功能包括:

  • 管理用户对表的增、删、改、查操作;
  • 管理 HRegionServer 的负载均衡,调整 HRegion 分布;
  • 在 HRegion 分裂后,负责新的 HRegion 分配;
  • 在 HRegionServer 停机后,负责失效 HRegionServer 上的 HRegion 迁移。
    在这里插入图片描述
    **

ZooKeeper

ZooKeeper 存储的是 HBase 中的 ROOT 表和 META 表的位置,这是 HBase 中两张特殊的表,称为根数据表(ROOT)和元数据表(META)。META 表记录普通用户表的 HRegion 标识符信息,每个 HRegion 的标识符为:表名+开始主键+唯一 ID。

随着用户表的 HRegion 分裂,META 表的信息也会增长,并且可能还会被分割为几个 HRegion。此时,可以用一个 ROOT 表来保存 META 的 HRegion 信息,而ROOT 表是不能被分割的,也就是 ROOT 表只有一个 HRegion。那么客户端(Client)在访问用户数据前需要首先访问 ZooKeeper,然后访问 ROOT 表,接着访问 META表,最后才能找到用户数据的位置进行访问,如图下所示。
在这里插入图片描述在这里插入图片描述

**

HBase与关系型数据库的区别

在这里插入图片描述

**

HBase 数据模型

(1)数据模型
在 HBase 中,数据以表的方式存储。具体数据模型中涉及到的术语解释如下:

  • 表(Table):是一个稀疏表(不存储值为 NULL 的数据),表的索引是行关键字、列关键字和时间戳。
  • 行关键字(Row Key):行的主键,唯一标识一行数据,也称行键。表中的行根据行键进行字典排序,所有对表的访问都要通过表的行键。在创建表时,行键不用、也不能预先定义。而在对表
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxiaoyouyouj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值