HBase原理和操作

目录

一、HBase在Zookeeper中的存储

元数据信息

HBase的元数据信息是HBase集群运行所必需的关键数据,它存储在Zookeeper的"/hbase"目录下。这些元数据信息包括:

  1. 表的结构:表的定义、列族(Column Family)信息等。
  2. Region的分布:Region是HBase中数据分布的基本单位,每个Region包含了一定范围的数据行。Zookeeper中存储了Region的分布信息,即每个Region当前由哪个RegionServer负责管理。
  3. Region Server的状态:RegionServer是HBase中负责存储和管理Region的节点。Zookeeper记录了RegionServer的健康状态、地址等信息,这对于HBase的负载均衡和故障恢复至关重要。

集群状态信息

除了元数据信息外,Zookeeper还负责维护HBase集群的状态信息,这些信息对于集群的稳定运行和高效管理非常关键。集群状态信息包括但不限于:

  1. Master节点的状态:Master节点是HBase集群中的管理节点,负责协调集群的整体运作。Zookeeper中存储了当前活跃的Master节点信息,以及备份Master节点的信息,以支持Master节点的高可用性。
  2. Region Server的健康状态:如前所述,Zookeeper实时监控Region Server的健康状态,并在必要时触发故障恢复流程。
  3. Region的迁移和状态变更:在HBase集群中,Region可能会因为负载均衡、故障恢复等原因发生迁移或状态变更(如从online状态变为offline状态)。这些变更信息也会被记录在Zookeeper中,以便集群中的其他组件能够感知并作出相应的响应。

二、HBase的操作

Web Console

端口:16010

使用时,请关闭防火墙

bash 复制代码
192.168.80.111:16010

命令行操作

此处仅提供基本的操作命令

  1. 创建表 create 'student','info','grade'

    查看所有表list

    查看表结构describe 'student' desc 'student'

  2. 插入数据put put 'student','s01','info:name','Tom'
    put 'student','s01','info:age','24'

    这两个代码最后操作的是同一个数据实体s01行

  3. 查询数据scan,get

    scan 相当于select * from student,允许设置其他的过滤器
    scan 'student'

    get 通过行键查询
    get 'student','s01'

  4. 清空表中的数据truncate 'student',本质是删除重建表

  5. 删除表disable 'student'
    drop 'student'

三、HBase中数据的保存过程

HBase数据保存的过程大致可以分为以下几个步骤:

写入WAL(Write Ahead Log):

当客户端向HBase写入数据时,首先会将数据写入WAL(预写日志)。WAL是一个关键的安全机制,确保在Region

Server宕机时,可以从WAL中恢复数据,防止数据丢失。WAL数据存储在HDFS上。 写入MemStore:

写入WAL后,数据接着被写入到Region

Server中的MemStore。MemStore是一个有序的内存缓冲区,用于缓存还未被持久化到磁盘的数据。每个Region的每个列族(Store)都有一个MemStore。

Flush到HFile:

当MemStore中的数据量达到设定的阈值时(如默认128MB),会触发Flush操作,将数据写入到HDFS上的HFile文件中。HFile是HBase中用于存储数据的文件格式,数据在HFile中按照RowKey排序。

Compact合并:

随着数据的不断写入,HFile文件的数量会逐渐增加。为了优化查询性能和存储效率,HBase会定期执行Compact合并操作,将多个HFile文件合并成一个或少数几个较大的HFile文件。

Region分裂是HBase自动进行负载均衡和数据分片的一种机制。

相关推荐
程序设计实验室28 分钟前
经历分享,发现挖矿木马后,服务器快速备份与重装(腾讯云平台)
linux
IvorySQL1 小时前
PostgreSQL 技术日报 (3月9日)|EXPLAIN ANALYZE 计时优化与复制语法讨论
数据库·postgresql·开源
Miku162 小时前
OpenClaw-Linux+飞书官方Plugin安装指南
linux·人工智能·agent
Miku162 小时前
OpenClaw 接入 QQ Bot 完整实践指南
linux·人工智能·agent
stark张宇4 小时前
MySQL 核心内幕:从索引原理、字段选型到日志机制与外键约束,一篇打通数据库任督二脉
数据库·mysql·架构
倔强的石头_5 小时前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
数据库
星辰员7 小时前
KingbaseES数据库:ksql 命令行用户与权限全攻略,从创建到删除
数据库
Yogurt_cry7 小时前
[树莓派4B] 闲置近10年的爱普生 L310 打印机爆改无线打印机
linux·物联网·树莓派
华仔啊20 小时前
千万别给数据库字段加默认值 null!真的会出问题
java·数据库·后端
Johny_Zhao1 天前
OpenClaw中级到高级教程
linux·人工智能·信息安全·kubernetes·云计算·yum源·系统运维·openclaw