当前位置: 移动技术网 > IT编程>网页制作>HTML > hadoop学习笔记(五)HBase的原理及概念模型

hadoop学习笔记(五)HBase的原理及概念模型

2020年07月19日  | 移动技术网IT编程  | 我要评论

数据模型

Hbase采用表来组织数据,采用行和列,行为行键,列为列族
在这里插入图片描述

通过{“行键”,“列族” ,“列限定符”,“时间戳”}来确定一个单元格。

概念模型

在这里插入图片描述

  • 行键按照字典序列进行排序
  • 用列anchor:cnnsi.com , anchor:my.look.ca或者contents:html来标识列
  • 从逻辑上讲,这是一个稀疏的映射关系表

物理模型

具体的物理存储采用了基于列的存储方式,会按照列族的不同分别存放两个片段,分成contents和anchor,列族中还包括时间戳和行键。

逻辑上是空的地方不会单独用null存储,而是根本就不会被存储,也不会用null这个东西占据空间。
在这里插入图片描述

Hbase的实现原理

在这里插入图片描述
图4-5:

  • 表中的每一条数据是根据行键字典序列维护
  • 根据行键对表中每一条数据进行分区,分区被称作Region,是在分布式集群上分发的基本单位,分发到运行Region服务器的机器上

图4-6:

-最初表中的只有一个Region,随着数据的不断插入,基于行键对数据进行分区的Region就会不断增大,在Region大小到达一个阀值的时候分裂成同等大小,实际的分裂过程是在Region服务器中进行的

大约的分布过程如下,Region存在Region服务器上
在这里插入图片描述

Region三级寻址

在这里插入图片描述
每一个Region都有唯一标识性,总体的三级寻址类似B+树

  • .META.是Region和Region服务器的对应关系表,又是元数据表,直到Region存放在那里
  • 映射关系多,.META.表也会被分成Region存在各个不同服务器上,-ROOT-表就是根数据表,用来存放.META.的Region的映射关系,-ROOT-只有一个Region,永远不会被划分
  • Zookkeeper文件记录了-ROOT-表的位置信息

通过三级寻址发现:
用户表Region个数 = -ROOT-表的映射关系个数 *. META.表的映射关系个数
在这里插入图片描述

Hbase运行的系统架构

在这里插入图片描述

  • 客户端表现形式为shell,也可自己写客户端,HBase提供了API,也是通过RPC这种远程访问机制对Mater进行访问,数据库的读写也是通过RPC与Region服务器进行交互
  • ZooKeeper就是对集群中机器进行管理,也并非是单一的机器,也是集群,图中是一个ZooKeeper集群概述,反映每台机器的运行状态或者是增加集群需要同通知ZooKeeper,Hbase内置了ZooKeeper。而且还保存了-ROOT-表地址和Master地址,用来进行三级寻址和访问Mater实现操作
  • Master主要是管理一些修改表的操作,负载均衡(有些Region服务器Region多,有些Region服务器Region少)
  • Region服务服务器以HDFS作为底层来进行存储,具有副本功能,Hbase不具备副本功能

Region服务器原理

在这里插入图片描述

  • 多个不同的Region放在一台Region服务器上

  • 一个Region中列族通过Store存储,Store由MemStore和StoreFile

  • MemStore是缓存,StoreFile是磁盘文件,先写入缓存,缓存满了,在写入磁盘空间,HFile就是StoreFIle的实现方式,Region会向整个HDFS系统去读写数据,所以安装hbase和配置hbase的时候需要配置参数,修改hbase.rootdir,指定Hbase的Master在NameNode运行的机器上,让HBase数据在HDFS集群上
    在这里插入图片描述启动HBase前需要设置属性hbase.rootdir,用于指定HBase数据的存储位置

  • HLog就是日志,必须先写入日志才能够写入MemStore缓存

用户读写数据过程:
在这里插入图片描述

  1. 数据会先写进日志HLog,然后写入缓存MemStore
  2. 缓存刷新:缓存有大小,会周期性的将缓存内容写入磁盘的StoreFile,并向HLog文件打一个标记表示缓存内容已经写入磁盘StoreFile文件中,来证明MemStore内容对应的HLog日志内容写入磁盘StoreFile,晴空缓存。每一个的缓存刷新都会生成一个StoreFile
  3. SoreFile越来越多就会发生合并,到达阈值,就会发生分裂,这个时候对应的Region就会被分成两个Region

在这里插入图片描述

读过程:在这里插入图片描述

  1. 先找缓存
  2. 缓存找不到就去StoreFile去找相关数据

本文地址:https://blog.csdn.net/liutao43/article/details/107372396

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网