Habse概念
官方网站:https://hbase.apache.org/book.html#
官网给的解释很通透,这里以官网的描述加上自我理解!!!!!
Data Model
In HBase, data is stored in tables, which have rows and columns. This is a terminology overlap with relational databases (RDBMSs), but this is not a helpful analogy. Instead, it can be helpful to think of an HBase table as a multi-dimensional map.
关于base的概念:
- Table:就mysql数据库一样,mysql是一个主键对应一条数据,而hbase是一个主键对应多条数据
hbase的表结构是由一个Row和多个Column组成的 - Row:相当于mysql中的主键,是能够唯一确定一条数据的值
- Column:就是图中的列名
- Column Family:可能会定义多个列族
- Column Qualifier:列的限定符
- Cell:主键对应的一个列名就是一个cell
- Timestamp:时间戳
Hbase命令行相关操作
本节主要是讲解一些常用命令,后期遇到再补充
- 进入hbase主机:
hbase shell - 查看hbase的各种命令用法:
help 或者 help ’命令名‘ - 退出hbase主机:
exit - 查看hbase全部表:
list - 查看hbase命名空间:
list_namespace - 查看某个命名空间下的全部表:
list_namespace_tables '命名空间' - 查看某个命名空间的创建方式:
describe_namspace '命名空间' - 创建一个命名空间:
create_namespace '命名空间' - 删除一个命名空间:
drop_namespace '命名空间' - 查看一个表是否存在:
exists 'jzh:jzh_12345' - 创建一个表:
create 'jzh:jzh_12345',{NAME=>'fm1',COMPRESSION=>'SNAPPY', TTL => 7776000},{NAME=>'fm2',COMPRESSION=>'SNAPPY'},{NAME=>'fm3',COMPRESSION=>'SNAPPY'},{SPLITS => ["0","1","2","3","4","5","6","7","8","9"]} 命名空间:前缀_表名 列 数据失效时间(60 * 60 * 24*90) 分区:是以开头的数字来分的。 - 给表新增列:
alter 'jzh:jzh_12345',{NAME=>'fm4',COMPRESSION=>'SNAPPY'} - 给表删除列:
alter 'jzh:jzh_12345', {NAME => 'fm4', METHOD => 'delete'} - 查看一个表的详细信息:
desc 'jzh:jzh_12345' - 让表失效:
disable 'jzh:jzh_12345' - 让表生效:
enable 'jzh:jzh_12345' - 判断表是否是失效状态:
is_disabled 'jzh:jzh_12345' - 判断表是否是启用状态:
is_enabled 'jzh:jzh_12345' - 删除表(删除前先失效):
drop 'jzh:jzh_12345' - 向表中插入数据:
put 'jzh:jzh_12345', '10010', 'fm1:NAME', 'jzh' - 查看表中全部数据:
scan 'jzh:jzh_12345' - 查看表中1条数据:
scan 'jzh:jzh_12345', LIMIT=>1 - 查看表种1条数据的5个版本数据
scan 'jzh:jzh_12345', { RAW => true, VERSIONS => 5, LIMIT => 1 } - 查看表中指定某条数据:
Ⅰ、scan 'jzh:jzh_12345',{STARTROW=>"065\x0118600247165",ENDROW=>"065\x0118600247165\x7F"}Ⅱ、get 'jzh:jzh_12345', "96709451541\x012021-07-05 17:36:29\x012199574"
scan方式可以进行模糊查询,是左闭右开;get方式只能精确查询 - 删除表中一条数据:
delete 'jzh:jzh_12345', '列名', 'fm1:jzh' - 清空表数据:
truncate 'jzh:jzh_12345' - 快照相关命令:
查看当前集群所有快照:list_snapshots查看当前集群某个快照:list_snapshots 'jzh_test.*'为 jzh_test 表创建快照(命名规范<表名>-snap-<日期>-<用途>):snapshot 'jzh_test', 'jzh_test-snap-20251224'删除快照:delete_snapshot 'jzh_test-snap-20251224'从快照恢复原表(覆盖原表,先禁用并删除原表):disable 'jzh_test' drop 'jzh_test' restore_snapshot 'jzh_test-snap-20251224'从快照克隆新表(不删原表):clone_snapshot 'jzh_test-snap-20251224', 'jzh_test_restore_20251224'查看快照详细信息:describe_snapshot 'jzh_test-snap-20251224' - 触发大合并命令:
对整个表的所有 Region 执行大合并:major_compact 'jzh:jzh_12345'对某个表的指定列族执行大合并: major_compact 'jzh:jzh_12345', 'fm1'对特定 Region 执行大合并 (Region名可以在web UI或meta表中查到): major_compact 'Region名'查看合并进度:compaction_state 'zh:jzh_12345' MAJOR:正在执行大合并。 MINOR:正在执行小合并。 MAJOR_AND_MINOR:同时有大小合并进行。 NONE:当前没有合并操作。