HBase:从基础操作到集群管理
HBase简介
HBase,一个由Apache软件基金会开发的分布式、面向列的NoSQL数据库,以其高性能和可扩展性在大数据领域占据着重要地位。
HBase的基本概念
HBase是基于Google的Bigtable模型构建的,它是一个分布式、可扩展、面向列的存储系统,适合于存储大量的非结构化和半结构化的稀疏数据集。HBase的数据存储在HDFS上,通过ZooKeeper进行集群协调。
HBase架构概览
HMaster
- 监控RegionServer的状态
- 处理RegionServer故障转移
- 管理元数据变更
- 负责Region的分配和负载均衡
HRegionServer
- 负责存储实际数据
- 处理分配给它的Region
- 刷新MemStore到HFile
- 维护WAL(Write-Ahead Log)
HFile与Store
- HFile是HBase表数据的底层存储文件
- Store是HFile的容器,对应于表中的一个列族
MemStore
- 内存中的数据缓存,用于快速读取操作
HBase的部署与启动
在开始HBase的操作之前,我们需要先部署HBase集群。以下是部署HBase的基本步骤:
-
下载并解压HBase:
wget http://apache.mirrors.lucidnetworks.net/hbase/stable/hbase-2.4.5-bin.tar.gz tar -xzvf hbase-2.4.5-bin.tar.gz
-
配置环境变量:
export HBASE_HOME=/export/servers/hbase-2.4.5 export PATH=$PATH:$HBASE_HOME/bin
-
配置hbase-env.sh:
export JAVA_HOME=/export/servers/jdk1.8.0_161 export HBASE_MANAGES_ZK=false # 使用外部ZooKeeper
-
配置hbase-site.xml:
<configuration> <!-- 配置项 --> </configuration>
-
拷贝ZooKeeper配置:
cp /path/to/zookeeper/conf/zoo.cfg $HBASE_HOME/conf/
-
启动HBase:
start-hbase.sh
HBase基本操作演示
进入HBase Shell
hbase shell
数据库操作
- 查看所有命名空间:
list_namespace
- 创建命名空间:
create_namespace 'mydb'
- 删除命名空间:
drop_namespace 'mydb'
表操作
- 在'mydb'命名空间下创建表:
create 'mydb:test', 'f1', 'f2'
- 查看表详细信息:
describe 'mydb:test'
- 增加列族:
alter 'mydb:test', 'f3'
- 删除列族:
alter 'mydb:test', {NAME => 'f2', METHOD => 'delete'}
数据的CRUD操作
- 插入数据:
put 'stu', '1001', 'info:name', 'linghc' put 'stu', '1001', 'info:age', '26'
- 根据行键查询:
get 'stu', '1001'
- 扫描表数据:
scan 'stu'
数据版本控制
- 查寻每个单元格的2个版本数据:
scan 'stu', {RAW => true, VERSIONS => 2}
- 更改表的版本设置:
alter 'stu', {NAME => 'info', VERSIONS => 2}
数据删除
- 删除指定列:
delete 'stu', '1001', 'info:sex'
- 根据行键和列名删除列:
deleteall 'stu', '1001', 'info:sex'
表的删除
- 删除表前需要先禁用表:
disable 'mydb:test' drop 'mydb:test'
HBase作为一个强大的NoSQL数据库,其灵活的数据模型和高性能的特点使其成为处理大规模数据集的理想选择。随着技术的不断发展,HBase将继续在大数据领域扮演重要角色。