栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > 架构设计

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

架构设计 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

数据模型

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去找相关数据
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/911022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号