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

Hbase-3-4-Hbase读写数据流程

写流程:

 

1:Client先访问zookeeper,得到对应的RegionServer地址

2:Client对RegionServer发起写请求,RegionServer接受数据写入内存

3:当MemStore的大小达到一定的值后,flush到StoreFile并存储到HDFS

 

Region是hbase存储数据的基本单元,数据都存储在Region中,每一个Region只存储一个columnFamily(列族)的数据,而且只是这个列族的一部分,当Region的大小达到某个阈值之后,会根据rowkey的排序,划分为多个Region,每个Region中包含多个Store对象,每个Store对象包含一个memStore和一个或多个Store File,memStore是数据在内存的实体,并且一般是有序的,当有数据写入的时候,回先写入到memStore中,当memStore的大小达到上限之后,Store会创建StoreFile,StoreFile便是Hfile的一层封装。

Hbase保证内存中的数据不会丢失,是使用HLog,HLog是WAL(预写日志)的一种实现,RegionServer将更新操作记录到memStore,然后更新到HLog中,只有当更新到HLog中成功后,这条记录才算真正成功的写入,当memStore数据丢失,可以使用HLog找回,注意,一般的WAL是先写入日志再写入内存,但是Hbase是先写入内存后写入日志

4-Hbase读数据流程

 

1:client先访问zookeeper,得到对应的RegionServer地址

        访问zookeeper中的meta得到RegionServer的节点信息,将               hbase的meta表缓存到本地,再根据meta表获取要访问的表所           对应的RegionServer的信息,

2:Client对RegionServer发起读请求

3:当RegionServer收到Client的读请求后,先扫描自己的MemStore,在扫描BlockCache(加速读内容缓存区),如果还没有找到则StoreFile中读数据,然后将数据返回给Client

注意:client读写数据并没有访问Hmaster,只需要访问zookeeper就可以了,原因在于:Hmaster启动的时候会把meta的信息表加载到zookeeper中,meta表记录了hbase所有的表所有的region的详细信息,例如region开始的key,结束的key,所在regionServer的地址,habse的meta表就相当于一个目录,通过meta表可以快速定位数据的实际位置,座椅读写操作只需要与zookeeper和对应的RegionServer进行交互就可以了,Hmaster只负责维护table和region的元数据信息,协调各个regionServer,这样Hmaster的负载就小了很多

相关文章:

  • Oracle——常用的几种函数(含案例)
  • 【Linux】多线程 —— 线程概念 | 线程控制
  • windows10创建ssh git gitee使用公钥私钥【自留收藏】
  • 微信搜题接口API功能
  • YBTOJ 树状数组 二进制
  • 无胁科技-TVD每日漏洞情报-2022-8-30
  • Java8 特性(一):函数、Lambok、Stream
  • 定时器(Quartz)
  • 神经网络实现线性回归,神经网络是回归算法吗
  • MFC调用VLC库播放中文路径导致崩溃的问题
  • 微信公众号搜题功能接口
  • 5.java不同方法的区别(构造方法,实例方法,类方法,static关键字)
  • 无胁科技-TVD每日漏洞情报-2022-8-31
  • 力扣-221题 最大正方形(C++)- dp
  • 信号量(信号灯) -----//目的:实现共享内存的多个进程之间同步
  • 收藏网友的 源程序下载网
  • [LeetCode] Wiggle Sort
  • 【React系列】如何构建React应用程序
  • 30秒的PHP代码片段(1)数组 - Array
  • EventListener原理
  • Java反射-动态类加载和重新加载
  • Netty源码解析1-Buffer
  • spring + angular 实现导出excel
  • 阿里云购买磁盘后挂载
  • 番外篇1:在Windows环境下安装JDK
  • 关于Java中分层中遇到的一些问题
  • 手写双向链表LinkedList的几个常用功能
  • 想写好前端,先练好内功
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • "无招胜有招"nbsp;史上最全的互…
  • (Git) gitignore基础使用
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (十六)串口UART
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)RocketMQ初步认识
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET命令行(CLI)常用命令
  • .Net中间语言BeforeFieldInit
  • .net中生成excel后调整宽度
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • /etc/skel 目录作用
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @SuppressWarnings(unchecked)代码的作用
  • [ 数据结构 - C++] AVL树原理及实现
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [1] 平面(Plane)图形的生成算法
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [AutoSar NVM] 存储架构
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [CF]Codeforces Round #551 (Div. 2)
  • [Docker]十二.Docker consul集群搭建、微服务部署,Consul集群+Swarm集群部署微服务实战
  • [ES-5.6.12] x-pack ssl