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系统架构
      • 客户端
      • ZooKeeper
      • HMaster
      • RegionServer
      • Hbase相关概念
      • 逻辑模型
      • 物理模型
      • 实际存储方式
    • HBase数据定义
    • HBase数据操作
    • 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-18
目录

HBase系统架构

# HBase系统架构

HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,底层基大数据存储与管理于Hadoop的HDFS来存储数据。 HBase的系统架构包括客户端、Zookeeper服务器、HMaster服务器、和RegionServer服务器这些组件。HBase集群也是主从模式,HMaster是主服务器,regionServer是从服务器,在集群中可允许有多个regionserver。

同时regionserver上有多个region,region是HBase中数据的物理分片。HBase的底层是HDFS的数据节点,HBase中的数据最终是存储在HDFS上的。

01

# 客户端

  • HBase系统的入口
    • 客户端是任务的发起者;它是整个储与管理HBase系统的入口,使用者直接通过客户 端来操作Hbase。
  • 通信功能
    • 客户端与HMaster进行管理类操作的通信;在获取RegionServer的信息后,直接与RegionServer进行数据读写类操作。
  • 客户端的多种形式
    • HBase 自带的HBase shell使用Java语言来实现的客户端

# ZooKeeper

协调的任务:

  • Master选举:通过选举机制保证同一个时刻只有一个HMaster处于活跃状态。
  • 系统容错:每个RegionServer在加入集群时都需要到Zookeeper中进行注册,创 建一个状态节点,Zookeeper会实时监控每个RegionServer的状态。
  • Region元数据管理:Region元数据被存储在Meta表中。Meta表是存在Zookeeper中。每次客户端发起新的请求时,需要查下Meta表来获取Region的位置。另外HMaster的地址也由zookeeper告知客户端。
  • Region状态管理:HBase 集群中region 会经常发生变更,变更的原因可能是系 统故障,或者是配置修改,还有region 的分裂和合并。只要region 发生变化,就 需要集群的所有节点知晓,否则就会出现异常。

# HMaster

HMaster是HBase集群中的主服务器,负责监控集群中的所有大数据存RegionServer,并且是所有元数据更改的接口储与管理. HMaster主要负责表和region的管理工作

  1. 管理用户对表的增、删、改、查操作
  2. 管理RegionServer的负载均衡,调整region的分布
  3. Region的分配和移除
  4. 在RegionServer宕机或下线后,负责迁移RegionServer上的Region到其他的RegionServer上

HMaster故障不影响当前客户端对数据的访问。但需尽快恢复,避免后续操作的正确性。

# RegionServer

RegionServer主要负责响应用户的请求,向HDFS中读写数据。一般在分布式集群当中,RegionServer大数据存储与管理运行在DataNode服务器上,实现数据的本地性。每个RegionServer包含多个region,它负责的功能有:

  1. 处理客户端读写请求。
  2. 处理分配给它的region。
  3. regionserver接收到客户端的写数据操作后,将数据缓存至 HDFS中。
  4. 处理Region分片:切片在运行过程中变得过大的Region。
  5. 执行压缩。

# Hbase相关概念

  1. 表( table ):HBase采用表来组织数据;同一个表的数据通常是相关的。
  2. 行( row ):每个表都由行组成,每个行由行键( row key )来标识,行键可以是任意字符串;数据存储时,按照行键的字典顺序排序。在检索时,可以通过单个row key来访问数据。
  3. 列族( column family ):一个table有许多个列族,列族是列的集合,属于表结构,也是表的基本访问控制单元;列族支持动态扩展,用户可以很轻松的添加一个列族或列,无须预定义列的数量以及类型。
  4. 列标识(column qualifier):列族中的数据通过列标识column qualifier来进行定位,通常以Column Family:Column Qualifier来确定列族中的某列,注意列族与列表之间用冒号来隔开。另外列标识是可以根据需要动态添加的。
  5. 时间戳( timestamp ):时间戳用来区分数据的不同版本;即每个单元格保存着同一份数据的多个版本,默认情况下,每一个单元格中的数据插入时都会用时间戳来进行版本标识。读取单元格数据时,如果时间戳没有被指定,则默认返回最新的数据,写入新的单元格数据时,如果没有设置时间戳,默认使用当前时间。
  6. 单元格( cell ):在table中,通过行、列族、列、时间戳来确定一个单元格,单元格中存储的数据没有数据类型,以二进制字节来存储,每个单元格保存着同一份数据的多个版本,不同时间版本的数据按照时间的顺序排序,最新时间的数据排在最前面。通过<RowKey,Column Family: Column Qualifier,Timestamp>元组来访问单元格。

# 逻辑模型

01

关系型数据库特点:

  • 表结构预先定义;
  • 同一列的数据类型相同;
  • 空值占用存储空间

HBase特点:

  • 只需要定义表名和列族可以动态添加列族和列
  • 数据都是字符串类型
  • 空值不占用存储空间

# 物理模型

02

# 实际存储方式

03

04

表中的数据按照行键的字典序分成多个region存在不同的regionserver上

05

#HBase
上次更新: 2024/04/21, 09:42:22
HBase简介
HBase数据定义

← HBase简介 HBase数据定义→

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