学习HBase
一、HBase的定义
一种分布式、可扩展、支持海量数据存储的Nosql数据库。
二、HBase 逻辑结构
三、HBase 物理存储结构
四、 数据模型
****1.****NameSpace
命名空间,类似于关系型数据库的 DatabBase 概念,每个命名空间下有多个表。HBase 有两个自带的命名空间,分别是 hbase 和 default,hbase 中存放的是 HBase 内置的表,default 表是用户默认使用的命名空间。
****2.****Region
Region是HBase数据存储和管理的基本单位,类似于关系型数据库的表概念。不同的是,HBase 定义表时只需要声明列族即可,不需要声明具体的列。这意味着,往 HBase 写入数据时,字段可以动态、按需指定。因此,和关系型数据库相比,HBase 能够轻松应对字段变更的场景。
****3.****Row
HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要。
****4.****Column
HBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符)进行限
定,例如 info:name,info:age。建表时,只需指明列族,而列限定符无需预先定义。
****5.****Time Stamp
用于标识数据的不同版本(version),每条数据写入时,如果不指定时间戳,系统会
自动为其加上该字段,其值为写入 HBase 的时间。
****6.****Cell
由 {rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell 中的数
据是没有类型的,全部是字节码形式存贮。
五、HBase Shell操作
1.基本操作命令
1.进入HBase数据库的
hbase shell
2.查看帮助
help
3.查看当前数据库有哪些命名空间以及对应命名空间下的表
list
4.退出hbase数据库
exit
5.查看当前版本
version
6.退格
ctrl+backspace
2.【NameSpace】命名空间基本操作命令
1.创建命名空间
create_namespace ‘stu2’
2.删除命名空间
drop _namespace ‘stu2’
3.查看所有的命名空间
list_namespce
4.查看指定命名空间下的表
list_namespace_tables ‘stu2’
5.查看指定命名空间
describe_namspace 'stu2'
3.【Table】表的操作命令
3.1增
1.已存在的表中新增列族
alter ‘stu2:student1’,’schoolinfo’
2.在命名空间中新建表
create ‘stu2:student1’,’baseinfo’
create ‘stu2:student2’,{NAME=>’baseinfo’},{NAME=>’schoolinfo’}
3.表中插入数据
put ‘stu2:student1’,’1001’,’baseinfo:sex’,’male’
put ‘stu2:student1’,’1001’,baseinfo:age’,’18’
put ‘stu2:student1,’1002’,’baseinfo:name’,’小红’
put ‘stu2:student1,’1002’,’baseinfo:sex’,’female’
put ‘stu2:student1,’1001’,baseinfo:age’,’20’
3.2删
1.删除命名空间:
drop_namespace ‘stu3’
2.删除表:删表之前必须先禁用表
disable ‘stu2:student’ 注:is_disabled命令查看表是否被禁用
关闭后要启用才能操作表 enable ‘stu2:student2’
drop ‘stu2:student’
3.删除某列族的全部数据
alter ‘ stu2:student3 ’, ‘delete’ => ‘ schoolinfo ’
4.删除某行的数据
deleteall ‘stu2:student3’,’1001’
5.删除某rowkey的某一列数据
delete ‘stu2:student2,’1001’,’schoolinfo:sex’
6.清空表数据
Disable ‘stu2:student2’需要先禁用 【启用表 enable ‘stu2:student2’】
Truncate ‘stu2:student2’
3.3改
更新指定字段的数据
put ‘stu2:student1’,’1001’,’baseinfo:name’,’小刚’
Put ‘stu2:student1,’1001’,’baseinfo:age’,’100’
3.4查
1.查看表结构
describe ‘stu2:student’
2.查看表数据
Scan ‘stu2:student’
3.根据条件查看表数据(关键字大写)
scan ‘stu2:student1’,{LIMIT=>1}
4.查看指定行或者指定列族:列的数据
get ‘stu2:student1’,’1001’
get ‘stu2:student1,’1001’,’baseinfo:name’
4.其他命令
1.统计表数据行数
Count ‘stu2:student1’
2.显示stu开头的表
List ‘stu.*’
3.变更表信息,将baseinfo列族中的数据存放3个版本
Alter ‘stu2:student1’,{NAME=>’schoolinfo’,VERSIONS=>3}
验证一下
Get ‘stu2:student1’,’1001’,{COLUMN=>’schoolinfo:schoolname’,VERSIONS=>3}
4.查看状态
Status
5.判断表是否存在
Exists ‘stu2:student’
版权归原作者 定海一棒~万妖朝 所有, 如有侵权,请联系我们删除。