HBase

本文介绍了HBase的起源,详细解析了其存储结构,包括key-value形式的列族和行存储,以及集群架构,涵盖HMaster、HRegionServer的角色和HDFS组件的作用。还详细阐述了HBase的常用操作,如创建表、插入数据、删除数据等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HBase起源

2006年Google发布了一篇叫做BigTable:A Distributed Storage System for Structured Data的论文。BigTable是一个分布式存储系统,利用谷歌提出的MapReduce分布式并行计算模型来处理海量数据,使用谷歌分布式文件系统GFS作为底层数据存储,并采用Chubby提供协同服务管理,可以扩展到PB级别的数据和上千台机器,

特点:具备可扩展性、高性能和高可用性

存储结构

HBase采用key-value的形式存储数据,最基本的存储单位是列(column)一个列或者多个列形成一行(row),若干行又组成了一张表(table)。

每行中的若干个列又可以被归类为一个列族(column family)。创建表的时候不需要指定列,但是需要指定列族。HBase中的列是很灵活的,可以在插入数据的时候再去添加

如果插入数据的时候使用了以前已经存在的row key,那就会把之前的列值给更新掉。更新的时候,之前的值不会被覆盖,而是把新值也放到这个单元格中。

集群架构

在这里插入图片描述
一般HBase集群有一个HMaster服务器和几个HRegionServer服务器。HMaster服务器负责维护表的结构信息,HRegionServer服务器负责存储数据

Store由两部分构成,一部分是MemStore,一部分是StoreFile。MemStore是内存缓冲区,StoreFile是HDFS上的文件。通常当MemStore的大小达到128M或者占用内存达到总内存的40%时会触发flush操作。

随着flush操作的执行,会产生越来越多的StoreFile文件。当StoreFile文件数量增长到3个后,会触发合并操作,将多个小的StoreFile合并成一个大的StoreFile。

StoreFile在完成Compact操作后,体积会越来越大。当单个StoreFile的大小超过10G后,会触发分裂操作,把当前Region分裂成2个Region。

为了保证恢复的效率,HBase会限制HLog记录的日志数量,如果数量达到32的时候,就会触发强制flush操作。

HDFS组件

Hbase是由Client、Zookeeper、HMaster、HRegionServer和HDFS等几个组件组成
Client:包含了访问HBase的接口,还有维护缓存加速HBase的访问。
Zookeeper:实现HMaster的高可用;监控HRegionServer的状态;存储.META.的地址。
HMaster:维护.META.;为HRegionServer分配Region;维护集群的负载均衡。
HRegionServer:处理客户端的读写请求;管理HMaster分配的Region。
HDSF:为HBase提供最终的底层数据存储服务。

启动节点

start-all.sh  开启节点
stop-all.sh   关闭节点
start-hbase.sh  开启hbase节点
stop-hbase.sh   关闭hbase节点

基础

Shell操作的第一步是启动Shell,使用以下命令
     hbase shell
要离开可以输入exit或者quit命令
exit;

使用create命令创建表

	create 'user', 'cf1'
这句话的意思是建立一个叫user的表,里边有一个叫做cf1的列族

使用list命令查看有哪些表

在HBase Shell执行以下命令:
       list
输出结果:
TABLE                                                                                        
user                                                                                         
1 row(s)
Took 0.0890 seconds                                                                          
=> ["user"]
说明我们的HBase中只有user一张表

使用describe命令来查看表属性

在HBase Shell执行以下命令:
	describe 'user'

使用put命令来插入数据

在HBase Shell执行以下命令:
	put 'user', 'rk0001', 'cf1:name', 'zhangsan'
这句话的意思就是
向user表插入一个单元格
这个单元格的row key为rk0001
这个单元格的列族是cf1
这个单元格的列名是name
这个单元格的数据值是zhangsan

使用scan来查看表数据

scan 'user'    查看user表里的内容

使用delete来删除单元格数据

	delete 'user', 'rk0002', 'cf1:age'
执行的结果就是user表中rk0002行的cf1:age单元格被删除了。

使用deleteall删除整行记录

deleteall 'user', 'rk0001'
这次一下就删除了整个rk0001记录。

使用disable来停用表

	disable 'user' 
	停用user表
	drop   'user'
	需要停用表之后才能删除表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值