HBase,Hadoop DataBase的简称
是一种非关系型数据库,not only SQL。
HBase是一个分布式的架构,底层是HDFS的架构,由各个DataNode组成。

HBase体系结构

  • 一、Hbase架构原理
    • 1、Client:
    • 2、Zookeeper:
    • 3、HMaster
    • 4、HRegionServer
    • 5、HDFS
    • 6、write-AheadLogs
    • 7、HRegion
    • 8、Store
    • 9、MemStore
    • 10、HFile
  • 二、数据结构
    • 1、RowKey
    • 2、Column Family
    • 3、Cell
    • 4、TimeStamp
  • 三、HBase原理
    • 1、元数据存储
    • 2、读流程
    • 3、写流程
    • 4、数据Flush过程

一、Hbase架构原理

HBase是主从结构,如下图所示,由Client、Zookeeper、HMaster、HRegionServer、HDFS等几个组件组成

1、Client:

  • 客户端,可以是HBase Shell、JavaAPI客户端、RestAPI等。
  • 提供访问接口,维护对应的缓存加速HBase的访问
  • Client缓存Region的位置信息,减少获取源数据的时间
  • 首次请求时加载cache,后面直接使用cache中的信息

2、Zookeeper:

通过ZK来做HMaster的高可用、HRegionServer的监控、元数据的入口以及集群配置的维护

  • 选举机制保证集群中只有一个HMaster
  • 监控HRegionServer状态,HRS异常时,通过Master收到ZK的通知(上下线)
  • 通过ZK存储元数据的统一入口地址
  • .ZooKeeper 中存储了 hbase:meta 表的位置,客户端可以通过 ZooKeeper 查 找到 hbase:meta 表的位置,hbase:meta 是 hbase 当中一张表,肯定是由一个 HRegionServer 来 管 理 , 其 实 主 要 就 是 要 通 过 ZooKeeper 的 “/hbase/meta-region-server”获取存储“hbase:meta”表的 HRegionServer 的地 址。

3、HMaster

  • 监控HRS,HRegionServer停机后,处理HRS的故障转移。
  • HRegion分裂后,负责新的HR的分配
  • 处理元数据的变更,比如对表的增删改操作
  • 在空闲时间对数据进行负载均衡,调整HRegion分布,在HRS间迁移HR以达到负载均衡
  • 通过Zookeeper发布自己的位置给客户端

4、HRegionServer

HRegionServer负责响应用户读写的IO请求,一台机器一个,功能如下

  • 和底层HDFS交互,存储数据到HDFS
  • 处理分配给它的HRegion
  • 刷新缓存到HDFS
  • 维护HLog日志存储文件
  • 处理来自客户端的读写请求
  • 负责处理HRegion变大后的拆分
  • 负责StoreFile的合并工作

5、HDFS

HDFS为HBase提供最终的底层数据存储服务,提供高可用的支持

  • 提供元数据和表数据的底层分布式存储服务
  • 数据多副本,保证集群的高可靠和高可用性

6、write-AheadLogs

  • 预写数据,写在内存之间,先写在一个叫做Write-Ahead logfile的文件中之后,在写入内存中。
  • 系统故障后,数据可以通过这个日志文件重建
  • HLog是每个HRS对应一个

7、HRegion

  • 表的横向切分,HBase表的分片
  • 一个表根据RowKey切分成HRegion分散存储在不同的HRS中,一个HRS中可以有多个不同的HRegion(可以是来自不同的表)

8、Store

  • 每个HRegion内部又分为多个Store,一个Store对应表中的一个列簇
  • 即一个store,是由1/N的rowkey和一个列簇组成

9、MemStore

  • 内存存储,位于内存中,保存当前的数据操作
  • 当数据保存在WAL中之后,HRS会在内存中存储键值对

10、HFile

  • 磁盘上保存原始数据的实际物理文件
  • StoreFile是以HFile的形式存储在HDFS的
  • 文件内容是二进制

二、数据结构

1、RowKey

  • 功能:检索、排序、根据RowKey范围裂变
  • 被保存为字节数组,即字符串
  • 访问表中的某一行,可以根据Rowkey的具体某个值、RowKey的正则Range访问、全表扫描

2、Column Family

  • 可以理解为关系型数据表中的多列划分为HBase表的一列
  • 一个列簇对应HDFS上的一个目录
  • 列簇是标的schema的一部分(列不是),在使用表之前就需要被定义
  • 列名义列簇作为前缀,比如courses:history,courses:math 都属于 courses 这个列簇
  • 每一个列簇对应一个Store,也对应HDFS一个目录,类似Hive分区操作

3、Cell

  • 由{RowKey,ColumnFamily,Version}唯一确定的单元,可以看成是一个存储空间,类似Excel中的单元格。比如{RowKey=10,ColumnFamily,Version}
  • Version就是TimeStamp时间戳
  • Cell中数据没有类型,以字节码的形式存储

4、TimeStamp

  • 每个Cell都保存着同一份数据的多个版本,版本通过时间戳来索引
  • 由HBase在数据写入时自动赋值,64位整型,精确到毫秒的当前系统实际
  • 两种数据版本回收方式:保存数据的最后n个版本;保存最近一段时间的内版本(比如最近七天)

三、HBase原理

1、元数据存储

  • 可以通过60010WebUI查看hbase:eta存储的元数据信息
  • scan 'hbase:meta’查看表元数据信息的内容,一行对应一个单一的Region。


2、读流程

  • Client 先访问 ZooKeeper,查找-ROOT-表,获取.META.表信息,然后从 meta 表读取 Region 的位置,然后读取 meta 表中的数据。meta 中又存储了用户表的 Region 信息;
  • 根据 RowKey 在 meta 表中找到对应的 Region 信息;
  • 找到这个 Region 对应的 RegionServer;
  • 查找对应的 Region;
  • 先从 MemStore 找数据,如果没有,再到 BlockCache 里面读;
  • BlockCache 还没有,再到 StoreFile 上读(为了读取的效率);
  • 如果是从 StoreFile 里面读取的数据,不是直接返回给客户端,而是先写入 BlockCache,再返回给客户端。 从整体的方面看,如下图所示

3、写流程

  • Client 先访问 ZooKeeper,查找-ROOT-表,获取.META.表信息,然后从 meta 表读取 Region 的位置,然后读取 meta 表中的数据。meta 中又存储了用户表的 Region 信息;
  • 根据 namespace(类似与关系型数据库中的数据库)表名和 RowKey 在 Meta 表中找到该 RowKey 应该写入到哪个 Region。
  • 找到这个 Region 对应的 RegionServer,并发送写数据请求
  • HRegionServer 将数据先写到 HLog(Write Ahead Log)。为了数据的持 久化和恢复;
  • HRegionServer 将数据写到内存(MemStore);
  • 反馈 Client 写成功。
    写数据这一块也可以看出,HBase 将数据写入到内存中后,就返回给客户端写入成功,响应非常快。这也是为什么 HBase 写数据速度快的原因。

4、数据Flush过程

  • HBase写数据写入到MemStore内存就会返回客户端,没有直接落盘,因此磁盘IO非常小,插入数据速度很快
  • 但当MenStore数据达到阀值(128M)时,HRS将数据刷到HDFS上生成HFile,然后将内存中的数据删除,同时删除HLog中的历史数据。
  • 该操作由HRS自己完成。

HBase原理详细概述相关推荐

  1. hbase原理详细解析

    一.hbase架构 hbase是主从架构的设计模式,一般有一主多从或多主多从,zookeeper负责协调hbase集群主要是负责一些元数据的存储,主指的是hmaster,从指的是hregionserv ...

  2. 《HBase原理与实践》阅读笔记

    学习笔记(1-3章) 全书概述 1.HBase概述 1.1.Hbase发展历史 1.2.Hbase数据模型 1.3.Hbase体系结构 1.4.Hbase系统特性 2.Hbase基础数据结构与算法 2 ...

  3. JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用

    http://www.ibm.com/developerworks/cn/linux/l-cn-jpeg/index.html 一.系统架构 本文以一个实际的产品为例,来说明 JPEG 在其中的应用. ...

  4. EJB是什么Java使用EJB容器的详细概述

    EJB是什么 博客分类: java EJB  最近项目中接触到EJB,但对EJB不是很了解,于是网上找了些资料参考,下面这篇是个人感觉讲的比较清晰的,遂转载一起参考,文章转自https://www.c ...

  5. HBase的详细介绍(概念以及特性)

    1 什么是hbase HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群. HBASE的目标是存储并处理大型的数 ...

  6. 彷徨 | HBase的详细介绍(概念以及特性)

    1.什么是hbase HBASE是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群. HBASE的目标是存储并处理大型的数 ...

  7. HBase原理之数据读取流程

    和写流程相比,HBase读数据是一个更加复杂的操作流程,这主要基于两个方面的原因:其一是因为整个HBase存储引擎基于LSM-Like树实现,因此一次范围查询可能会涉及多个分片.多块缓存甚至多个数据存 ...

  8. JPEG 原理详细分析

    一 JPEG 概述 JPEG 是 Joint Photographic Experts Group 的缩写,即 ISO 和 IEC 联合图像专家组,负责静态图像压缩标准的制定,这个专家组开发的算法就被 ...

  9. HBase原理深入解析(一)----HBase架构总览

    前言:掌握Hbase的重要性不言而喻,掌握Hbase的设计原理更是重中之重.本文是对HBase原理进行讲解系列文章的开篇,尽量详细地从整体上介绍HBase的架构,对每个部分的名词进行初步解释,使我们对 ...

最新文章

  1. python集合用法详解(创建、添加(add()、update())、删除(remove()、discard()、pop())、查找(in、not in))
  2. 排序算法----桶排序(java版)
  3. 解决冲突的拉链法探测的ASL
  4. 边缘计算高考题!全答对就可以去华为上班!
  5. cmake vscode 高亮_vscode中cmake项目管理和调试
  6. In the beginning, many people on Wall Street did
  7. 转载:认识自我,把握机遇 —— 谢恩伟 (二)
  8. 计算机c盘满了怎么搬家,c盘占满了,怎么清理
  9. 信息隐藏与数字水印实验4-LSB信息隐藏的卡方分析
  10. Android 国内集成使用谷歌地图
  11. java公告栏按月查询_求java公告栏特效代码
  12. QInputDialog,QTextEdit,QLineEdit,Qt右键菜单英文转中文问题
  13. 关于removebg官网与API
  14. 简单实现通讯录中文名字按拼音首字母排序
  15. 艺赛旗(RPA)【服务端】修改服务器访问端口
  16. 【C++】Placement New
  17. java毕业设计物资租赁管理系统mybatis+源码+调试部署+系统+数据库+lw
  18. 思维导图软件哪个免费更好用?MindManager、iMindMap、MindMappe
  19. 北邮世纪,一个走过的人。
  20. 电脑插入U盘后识别不出来,怎么办

热门文章

  1. 什么软件测试功耗准,功耗测试思路-软件篇
  2. Non-Blocking Simultaneous Multithreading:Embracing the Resiliency of Deep Neural Networks阅读
  3. mysql内链查询写法_网站内链优化与几种常见的结构优化方法
  4. Python怎么查看函数作用及定义
  5. 织梦cms多图发布功能
  6. MATLAB的figure图像提取数据至excel中
  7. 算法学习--排序算法
  8. 并发用户数量的正确英文表示
  9. 【数理统计】参数估计及相关(点估计、矩估计法、最大似然估计、原点矩中心距)
  10. 项目复盘的完整步骤和高效方法