EmmmuaCode EmmmuaCode
首页​
导航🚀​
  • 数据结构
  • 计算机网络
  • Java基础

    • JavaSE
    • JVM虚拟机
    • JUC并发编程
  • JavaWeb

    • Servlet
    • MVC
    • filter|listener
  • HTML
  • CSS
  • JavaScript
  • Vue
  • uni-app
  • Spring5
  • SpringMVC
  • SpringBoot2
  • SpringCloud
  • SpringSecurity
  • 搜索引擎

    • ElasticSearch
  • 消息队列

    • RabbitMQ
  • 服务器

    • Nginx🌐
  • 服务框架

    • Dubbo
  • Python基础
  • 数据分析
  • Hadoop
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • NoSQL数据库概论
    • Redis
    • MongoDB
    • HBase
  • 框架

    • MyBatis
    • MyBatis-Plus
    • ShardingSphere
  • 部署

    • Linux
    • Docker
  • 管理

    • Maven
    • Git
  • 友情链接
  • 优秀博客文章
  • 索引

    • 分类
    • 标签
    • 归档
  • 其他

    • 关于
Github (opens new window)

wufan

海内存知己,天涯若比邻。
首页​
导航🚀​
  • 数据结构
  • 计算机网络
  • Java基础

    • JavaSE
    • JVM虚拟机
    • JUC并发编程
  • JavaWeb

    • Servlet
    • MVC
    • filter|listener
  • HTML
  • CSS
  • JavaScript
  • Vue
  • uni-app
  • Spring5
  • SpringMVC
  • SpringBoot2
  • SpringCloud
  • SpringSecurity
  • 搜索引擎

    • ElasticSearch
  • 消息队列

    • RabbitMQ
  • 服务器

    • Nginx🌐
  • 服务框架

    • Dubbo
  • Python基础
  • 数据分析
  • Hadoop
  • SQL 数据库

    • MySQL
  • NoSQL 数据库

    • NoSQL数据库概论
    • Redis
    • MongoDB
    • HBase
  • 框架

    • MyBatis
    • MyBatis-Plus
    • ShardingSphere
  • 部署

    • Linux
    • Docker
  • 管理

    • Maven
    • Git
  • 友情链接
  • 优秀博客文章
  • 索引

    • 分类
    • 标签
    • 归档
  • 其他

    • 关于
Github (opens new window)
  • MySQL-基础

    • MySQL-简介
    • MySQL-CRUD
    • MySQL-函数
    • MySQL 多表查询
    • MySQL 约束与自增长
    • MySQL 索引与事务
    • MySQL 表类型和存储引擎
    • MySQL 视图与管理
  • MySQL-进阶

    • MySQL 存储引擎
    • MySQL 索引
    • MySQL SQL优化
    • MySQL 视图/存储过程/触发器
    • MySQL 锁
    • MySQL InnoDB引擎
    • MySQL 管理
  • MySQL-运维

    • MySQL 日志
    • MySQL 主从复制
    • MySQL 分库分表
    • MySQL 读写分离
  • NoSQL 数据库概论

    • 非关系型数据库
    • NoSQL数据库理论基础
    • NoSQL数据库分类
  • Redis

    • Redis 数据库简介
    • Redis 概述安装
    • 常用五大数据类型
    • Redis 配置文件
    • Redis 发布和订阅
    • Redis 新数据类型
    • Redis Java整合
    • Redis 事务与锁
    • Redis 持久化操作
    • Redis 主从复制
    • Redis 集群搭建
    • Redis 缓存问题
    • Redis 分布式锁
    • Redisson 的应用
    • Redis 6.0新功能
  • MongoDB

    • MongoDB 相关概念
    • MongoDB 安装
    • MongoDB 常用命令
    • MongoDB 索引-Index
    • MongoDB 整合Java案例
    • MongoDB 集群和安全
  • HBase

    • HBase简介
    • HBase系统架构
    • HBase数据定义
    • HBase数据操作
    • HBase基本原理
      • Region定位
        • region
        • META表
        • Region定位
      • 数据存储与读取
        • MemStore
        • Store
        • Store的合并分裂
        • HFile
        • HBase写文件流程
  • MyBatis

    • MyBatis 入门案例
    • XML 配置
    • XML 映射文件
    • 动态SQL
    • 缓存
    • MyBatis的逆向工程
    • 分页插件
  • MyBatis-Plus

    • MyBatis-Plus 简介
    • MyBatis-Plus 入门案例
    • MyBatis-Plus 基本CRUD
    • MyBatis-Plus 常用注解
    • 条件构造器和常用接口
    • MyBatis-Plus 插件
    • MyBatis-Plus 通用枚举
    • MyBatis-Plus 代码生成器
    • MyBatis-Plus 多数据源
    • MyBatisX插件
  • ShardingSphere

    • ShardingSphere_高性能架构模式
    • ShardingSphere 简介
    • ShardingSphere 主从同步
    • ShardingSphere_JDBC 读写分离
    • ShardingSphere-JDBC垂直分片
    • ShardingSphere-JDBC水平分片
    • 启动ShardingSphere-Proxy
    • ShardingSphere-Proxy读写分离
    • ShardingSphere-Proxy垂直分片
  • studynotes
  • database
  • HBase
wufan
2022-03-23
目录

HBase基本原理

# HBase基本原理

# Region定位

# region

01

客户端在插入,删除,查询数据时需要知道哪个Region服务器上存有自己所需的数据,这个查找Region的过程称之为Region定位。

# META表

Region标识符,可以唯一标识每个Region,region标识符由‘表名、开始行键、RegionID’组成。为了定位每个Region所在的位置,就可以构建一张映射表,映射表的每个条目包含两项内容,一个是大数据存Region标识符,另一个是Region服务器标识,这个条目就表示储与管理Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。

02

# Region定位

  1. 客户端通过Zookeeper获取到Meta表分区存储的地址

  2. 然后在对应Region服务器上获取meta表的信息,得到所需表和行键所在的Region信息

  3. 然后在从Region服务器上找到所需的数据。

    一般客户端获取到Region信息后会进行缓存,下次再查询不必从Zookeeper开始寻址。

03

# 数据存储与读取

04

HBase的核心模块是Region服务器。

Region服务器由多个Region块构成,Region块中存储的一系列连续的数据集。

Region服务器主要构成部分是:HLog和Region块。

HLog记录该Region的操作日志。

Region对象由多个Store组成,每个Store对应当前分区中的一个列族,每个Store管理一块内存,即MemStore。

在写数据的时候,数据先写入MemStore,当MemStore中的数据达到一定条件时会写入到StoreFile文件中,因此每个Store包含若干个StoreFile文件。StoreFile文件对应HDFS中的HFile文件。

# MemStore

当Region服务器收到写请求的时候,Region服务器会将请求转至相应的Region。数据首先写入到Memstore,然后当到达一定的阀值的时候,Memstore中的数据会被刷到HFile中进行持久性存储。

# Store

Store是Region服务器的核心,存储的是同一个列族下的数据,大数据存每个Store包含有一块MemStore和0个或多个StoreFile。

StoreFile是HBase中最小的数据存储单元。

Store存储是HBase存储的核心,其中由两部分组成,一部分是MemStore,一部分是StoreFile。MemStore是Sorted Memory Buffer(内存写缓存),用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile), 当StoreFile文件数量增长到一定阈值,会触发Compaction合并操作。

# Store的合并分裂

05

# HFile

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

06

# HBase写文件流程

  • 客户端首先访问zookeeper,从meta表得到写入数据对应的region信息和相大数据存应的region服务器
  • 找到相应的region服务器,把数据分别写到HLog和MemStore上一份
  • MemStore达到一个阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以从HLog上恢复)
  • 当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合并为一个StoreFile
  • 当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split分裂),并由Hmaster分配到相应的HRegionServer,实现负载均衡
  • 客户端先访问zookeeper,从meta表读取Region的信息对应的服务器
  • 客户端向对应Region服务器发送读取数据的请求,Region接收请求后,先从MemStore找数据,如果没有,再到StoreFile上读取,然后将数据返回给客户端。
#HBase
上次更新: 2024/04/21, 09:42:22
HBase数据操作
MyBatis 入门案例

← HBase数据操作 MyBatis 入门案例→

最近更新
01
微信支付功能的实现与流程
11-21
02
购物车与结算区域的深入优化与功能完善
11-21
03
购物车与结算区域的功能实现与优化
11-21
更多文章>
Theme by Vdoing | Copyright © 2023-2024 EmmmuaCode | 黔ICP备2022009864号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式