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自动进行负载均衡和数据分片的一种机制。

相关推荐
程序员老舅25 分钟前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华38 分钟前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
IvorySQL44 分钟前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·1 小时前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德1 小时前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
爱吃生蚝的于勒1 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森1 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
惊讶的猫1 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i2 小时前
完全卸载MariaDB
数据库·mariadb
翼龙云_cloud2 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云