Hbase架构和读写流程

目录

1.概述

2.简介

3.Hbase架构

4.数据模型

5.Hbase写流程

6.Hbase读数据


1.概述

本篇文章将简单的讲述Hbase的架构和读写流程,多为理论部分,不涉及API代码

2.简介

从官方介绍可以知道,Hbase是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库。

3.Hbase架构

  • 从图中不难看出Hbase是依赖Zookeeper进行分布式服务管理,负责存储Hbase集群的元数据,以及Master节点选举等功能。
  • 可以看出我们每台服务器就相当于一个RegionServer,每个RegionServer服务器中可以有多个Region,一个Rgion就是按照表的RowKey横向切开的一部分,当然是有一写切分策略的
  • 每个RegionServer中有一个或多个Hlog作为预写日志文件,一个或多个blockcache 用来做块缓存用于保存常用的数据块,Region中是由一个或多个Store组成,每个Store中都含有memStore缓存,和数据存储的物理格式HFile,数据是在hdfs上以二进制的形式存储的。
  • 可以看到数据被切分成一个个的Block方便读取

4.数据模型

/hbase/data/events_db/events/3a3af598b819c155277394de342ebc5f/location

  • /hbase/data/ 存储目录
  • events_db 命名空间
  • events 表名
  • 3a3af598b819c155277394de342ebc5f 这个一个region
  • location 列簇名
  • 947f7065c39248b88b122b0b15f344e4 就是具体的数据信息
  • 数据是一个个的Cell也就是唯一的单元,cell是没有数据类型的,全是字节码形式存储
  • { RowKey, ColumnFamily: ColumnQualifier, TimeStamp}

5.Hbase写流程

  • 客户端首先去zookeeper中获取元数据表在哪个RegionServer中,并将元数据做缓存方便后续使用
  • 访问元数据表对应的RegionServer服务器,根据请求(namespace:table/rowkey)查询要写入的哪个RegionServer中
  • 客户端与数据位于的RegionServer进行通讯,客户端首先将数据写入到WAL(预写日志文件)
  • 然后将数据写入到memstore中,按照RowKey进行排序,向客户端发送写入成功的信息
  • 等到达memstore的刷写时机后,将数据写入到Hfile中

6.Hbase读数据

  • 和写数据类似,客户端也会向zookeeper获取meta表所处的regionServer找到具体数据所在的RegionServer
  • Block Cache 是Hbase的块缓存机制,里面存储了最近访问的数据是为了加快查询效率,Block Cache有淘汰机制,太远太久没使用的Block块将会被去掉
  • 客户端首先在Region中的Block Cache 、MemStore、Hfile中查找需要的数据,然后将找到的数据合并后加载到Block Cache中方便后续使用,最后将数据返回客户端
相关推荐
代码的小搬运工1 小时前
网络请求(NSURL、NSURLRequest、NSURLSessionDataTask、协议回调与 JSON 数据的基本流向)
网络·数据库·json
软件工程师文艺1 小时前
TigerVNC 源码架构深度解析:从协议状态机到拥塞控制的设计哲学
架构
Cx330❀7 小时前
【MySQL基础】一文吃透“表的约束”:从 Null/Default 到主外键的终极安全法则
linux·服务器·数据库·c++·mysql·安全
c238567 小时前
第二篇:《测试指挥官:可视化单题自测框架(含 assert 实操)》
java·数据库·c++·算法·安全性测试
我科绝伦(Huanhuan Zhou)8 小时前
MySQL极端场景数据丢失防护:从Crash-Safe到异地备份
数据库·mysql
辞旧 lekkk8 小时前
【Redis初阶】常见数据类型
开发语言·数据库·c++·redis·学习·缓存·bootstrap
明志数科8 小时前
人形机器人格斗场景下的技术挑战:动力学控制、感知融合与实时决策
网络·数据库
酉鬼女又兒8 小时前
零基础入门 DeepSeek V4 Pro API 开发:从环境搭建、消息格式规范到翻译函数实战、少样本提示、多轮对话聊天机器人与常见报错全流程详解指南
大数据·网络·数据库·人工智能·macos·机器人·github
笨蛋不要掉眼泪8 小时前
MySQL架构揭秘:MVCC解决读一致性问题
数据库·mysql·架构
张忠琳9 小时前
【kubernetes】Node Feature Discovery 0.20.0-devel 源码深度解析 — 第四卷:CLI入口、工具链与全局架构总结
云原生·容器·架构·kubernetes·nvidia