HBase 系统架构图

  

  组成部件说明 
  Client: 
  使用HBase RPC机制与HMaster和HRegionServer进行通信 
  Client与HMaster进行通信进行管理类操作 
  Client与HRegionServer进行数据读写类操作 
  Zookeeper: 
  Zookeeper Quorum存储-ROOT-表地址、HMaster地址 
  HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况 
  Zookeeper避免HMaster单点问题 
  HMaster: 
  HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行 
  主要负责Table和Region的管理工作: 
  1 管理用户对表的增删改查操作 
  2 管理HRegionServer的负载均衡,调整Region分布 
  3 Region Split后,负责新Region的分布 
  4 在HRegionServer停机后,负责失效HRegionServer上Region迁移 
  HRegionServer: 
  HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据

  

  HRegionServer管理一些列HRegion对象; 
  每个HRegion对应Table中一个Region,HRegion由多个HStore组成; 
  每个HStore对应Table中一个Column Family的存储; 
  Column Family就是一个集中的存储单元,故将具有相同IO特性的Column放在一个Column Family会更高效

StoreFile = 从内存刷入磁盘

  HStore: 
  HBase存储的核心。由MemStore和StoreFile组成。 
  MemStore是Sorted Memory Buffer。用户写入数据的流程:

  

  Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 触发Compact合并操作 -> 多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除 -> 当StoreFiles Compact后,逐步形成越来越大的StoreFile -> 单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region,Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。
由此过程可知,HBase只是增加数据,有所得更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。

  HLog 
  引入HLog原因: 
  在分布式系统环境中,无法避免系统出错或者宕机,一旦HRegionServer意外退出,MemStore中的内存数据就会丢失,引入HLog就是防止这种情况 
  工作机制: 
  每个HRegionServer中都会有一个HLog对象,HLog是一个实现Write Ahead Log的类,每次用户操作写入Memstore的同时,也会写一份数据到HLog文件,HLog文件定期会滚动出新,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知,HMaster首先处理遗留的HLog文件,将不同region的log数据拆分,分别放到相应region目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。

  HBase存储格式 
  HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,格式主要有两种: 
  1 HFile HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile 
  2 HLog File,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File

  HFile

  

  图片解释: 
  HFile文件不定长,长度固定的块只有两个:Trailer和FileInfo 
  Trailer中指针指向其他数据块的起始点 
  File Info中记录了文件的一些Meta信息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等 
  Data Index和Meta Index块记录了每个Data块和Meta块的起始点 
  Data Block是HBase I/O的基本单元,为了提高效率,HRegionServer中有基于LRU的Block Cache机制 
  每个Data块的大小可以在创建一个Table的时候通过参数指定,大号的Block有利于顺序Scan,小号Block利于随机查询 
  每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字,目的是防止数据损坏

  HFile里面的每个KeyValue对就是一个简单的byte数组。这个byte数组里面包含了很多项,并且有固定的结构。

  

  KeyLength和ValueLength:两个固定的长度,分别代表Key和Value的长度 
  Key部分:Row Length是固定长度的数值,表示RowKey的长度,Row 就是RowKey 
  Column Family Length是固定长度的数值,表示Family的长度 
  接着就是Column Family,再接着是Qualifier,然后是两个固定长度的数值,表示Time Stamp和Key Type(Put/Delete) 
  Value部分没有这么复杂的结构,就是纯粹的二进制数据

  HLog File

  

  HLog文件就是一个普通的Hadoop Sequence File,Sequence File 的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括 sequence number和timestamp,timestamp是“写入时间”,sequence number的起始值为0,或者是最近一次存入文件系统中sequence number。 
  HLog Sequece File的Value是HBase的KeyValue对象,即对应HFile中的KeyValue

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/rocky24/p/0d06532bc7c8ae6583cb5354d9c561ed.html

HBase 系统架构相关推荐

  1. HBase系统架构、Hmaster、HRegionServer、Memstore、storeFile、Region

    目录 Hbase系统架构 HMaster -- 主节点 HRegionServer -- 从节点 Memstore 与 storefile Region HBase架构图 --- 重要 Hbase系统 ...

  2. Hbase系统架构简述

    由于最近要开始深入的学习一下hbase,所以,先大概了解了hbase的基本架构,在此简单的记录一下. Hbase的逻辑视图 Hbase的物理存储 HRegion Table中所有行都按照row key ...

  3. hbase系统架构图以及各部分的功能作用,物理存储,HBase寻址机制,读写过程,Regin管理,Master工作机制

    1.1 hbase内部原理 1.1.1 系统架构 Client 1 包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如regione的位置信息. Zookeepe ...

  4. HBase详细介绍:起源、实现原理、系统架构

    1.Hbase起源 HBase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java.它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系 ...

  5. hbase工作 架构原理

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 1. HBase系统架构图 整个HBase架构重点关注几部分:HMaster.HRegionServer.Zookeeper.HRegion(内部包括 ...

  6. HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑

    原文地址 https://www.cnblogs.com/Little-Li/p/7878219.html https://yq.aliyun.com/articles/54410 https://b ...

  7. 亿级流量系统架构之如何设计承载百亿流量的高性能架构【石杉的架构笔记】...

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 本文来源:石杉的架构笔记(ID:shishan100) 一.往期回顾 上篇文章<大型系统架构 ...

  8. 百亿级日志系统架构设计及优化

    作者:杨津萍,大数据架构师,从业十余年,专攻 Web 架构及大数据架构. 来自:51cto技术栈(ID:blog51cto) " 日志数据是最常见的一种海量数据,以拥有大量用户群体的电商平台 ...

  9. 京东11.11大促背后,那些系统架构经历了些什么

    一年一度的京东11.11电商大促,是一次用户的狂欢,也是一次京东智联云架构师们的大型测验.在海量流量.高频用户访问和大量不确定性的DDos攻击之下,系统架构面临了太多考验.在今年京东11.11期间,京 ...

最新文章

  1. LeetCode 230. Kth Smallest Element in a BST--C++,Python解法--面试真题--找二叉树中第K小的元素
  2. 26期20180607 set_uid stick_bit 软硬连接
  3. ubuntu 设置root启动
  4. 背景透明的 Dialog
  5. NIPS 2018 | 中科院自动化所两篇入选论文:高清真实图像生成领域及GAN研究在人脸识别领域的进展...
  6. java反编译工具_推荐Java反编译工具luyten、jd-gui
  7. Linux_快速查找文件
  8. 一些自己使用VS2015的心得
  9. Vue3初始化需要安装的插件
  10. python生成手写汉字字体_「zi2zi」:用AI生成自己的手写字体
  11. 【性能测试】系统性能测试指标
  12. ModelState.IsValid 验证时忽略某些字段验证
  13. 见证人人的衰落,讲一句活该
  14. 阿帕拉契州立大学代表团访问AURAK
  15. 凯酷键盘KC-84 大写和ctrl 功能调换问题
  16. linux服务器下如何显示中文的图片,Linux服务器中文显示问题
  17. CA(证书颁发机构)
  18. IE6,IE7和FireFox兼容处理(持续发现中)
  19. Qt 配置自动清理中间文件 --- qmake
  20. 【PCB专题】PCB 阻焊层(solder mask)与助焊层(paste mask)有什么区别

热门文章

  1. TaxonKit工具:获取物种NCBI数据库的Taxonomy ID
  2. ajaxsetup无效_Ajax请求session失效该如何解决
  3. 高分辨率扫描出来的图片有摩尔纹_ue4 摩尔纹 远处模型闪烁问题
  4. vi php,linux编辑文件命令vi有什么作用
  5. chromiumwebbrowser 使用_CefSharp ChromiumWebBrowser初始化完成后加载网址
  6. python如何输出两行_python-如何串联在两行上指定的标识符?
  7. python界面是什么样子的图片_如何在python界面显示图片
  8. C++编程进阶7(何时使用成员函数模板,模板类的实参推断与类型转换、继承与数组)
  9. 开闭操作进行平滑处理与边缘提取
  10. HALCON标定倾斜安装镜头