当前位置: 首页 > news >正文

HBase 数据读写流程

HBase 数据读写流程

读数据

HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中

假设现在想在用户表中获取 row key 为 row0001 的用户信息

要想取得这条数据,就需要先找到含有此条记录的 region

HBase 是如何定位到具体 regionserver 中的具体 region 的呢?

HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息

例如 region 的 开始KEY结束KEY所在server的地址……

hbase:meta 表就像一个目录,通过他可以快速定位数据的实际位置

hbase:meta 表是存储在 ZooKeeper 中的,所以客户端就需要先访问 ZooKeeper,获取到 hbase:meta,从中查询出目标数据是在哪个 regionserver 中的哪个 region 中,然后到 region 中进行读取

我们可能会感觉这个寻址路径有点长,所以客户端会将查询过的位置信息保存缓存起来,方便以后快速读取

写数据

写操作会被分配到对应的 regionserver 进行处理,先回顾一下 regionserver 的结构

从客户端来看,写操作比较简单,写请求到达 regionserver 后,这些修改会先被写到 MemStore和 HLog 中,成功写入后便会通知客户端写入完成了

MemStore 是内存缓存,保存最近更新的数据
HLog 是日志文件,记录着所有的更新操作

对于系统来说,写操作还没完,系统会定期调用刷新缓存的方法,把MemStore中的内容写入文件,生成一个新的 StoreFile,然后把缓存清空,并在HLog中做一个标记,表明上面的内容已经写入文件

这样,数据就真正落地了,但写操作会引发一些后续问题,例如HLog日志文件越来越大了、StoreFile越来越多了、当前region越来越大了,所以,系统有还有更多的工作需要做

  • 系统会定期清理HLog日志文件,把其中已经写入文件的记录删除

  • 当 StoreFile 文件数量超过设定值时,会触发合并操作,合并成一个大文件,如果这个大文件超过了设定值,会再被分割开

  • region的大小达到阈值时,会被切分开,生成一个新的regionHMaster会对其进行管理,分配到合适的 regionserver

  • region的变化后,系统还需要对 hbase:meta 表进行维护

  •  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
  • powershell: 生成随机字符串
  • 使用httpClient上传至远程服务器
  • Kafka Offset Storage
  • jvm理论-运行时数据区
  • #if和#ifdef区别
  • Linux 虚拟地址与物理地址的映射关系分析【转】
  • nginx建https站实验
  • Flex布局到底解决了什么问题
  • VB之SendKeys键盘模拟
  • win 下 apache 虚拟主机配置方式
  • php libevent 详解与使用
  • Weex技术峰会精华集锦:揭秘火爆Github排行版的跨平台移动开发工具背后技术
  • 用js使得输入框input只能输入数字
  • /usr/bin/env: node: No such file or directory
  • php的引用
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [iOS]Core Data浅析一 -- 启用Core Data
  • Android系统模拟器绘制实现概述
  • CentOS7 安装JDK
  • CSS相对定位
  • EventListener原理
  • HTTP 简介
  • JavaScript的使用你知道几种?(上)
  • JavaScript中的对象个人分享
  • Laravel Mix运行时关于es2015报错解决方案
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 模型微调
  • 前端js -- this指向总结。
  • 容器服务kubernetes弹性伸缩高级用法
  • 实现简单的正则表达式引擎
  • 算法---两个栈实现一个队列
  • 算法之不定期更新(一)(2018-04-12)
  • 写代码的正确姿势
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ### RabbitMQ五种工作模式:
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)汇编语言——简单程序
  • (推荐)叮当——中文语音对话机器人
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转载)(官方)UE4--图像编程----着色器开发
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @Bean注解详解