Hbase学习之简单操作

使用

Hbase是一个高可靠性、高性能、可伸缩、分布式、基于列存储的非关系型(NoSQL)数据库。hbase将数据存储在HDFS集群上,备份机制齐全。通过 ZooKeeper 协调查找数据,访问速度快。

架构

在这里插入图片描述

HMaster Server :负责管理所有的 HRegion Server,每台 HRegion Server 都会和 HMaster Server 通信。本身不存储 HBase 中的任何数据,存储数据到 HRegion Server 的映射,告诉每台 HRegion Server 要维护哪些HRegion。

HRegionServer:HBase 逻辑上的表可能会被划分为多个HRegion,然后存储到 HRegion Server 群中。一台机器上一般只运行一个 HRegion Server。

HRegion:表的大小超过设置的值,自动将表划分为不同的区域,每个区域包含所有行的子集。从物理上讲,一张表被拆分成了多块,每一块儿就是一个 HRegion。

ZooKeeper:协调 HBase 中所有的服务器。处理 HBase 服务器运行期间可能发生的错误。

mysql表和hbase表的区别:

mysql表

idnameagemathenglish
01jack33null90

hbase表

rowkeybase Infoscore InfotimeStamp
nameagemathenglish
1001jackt1
100133t2
100190t4

插入元素时,是按照(key-value对)一个一个的插入。如果出现一个列的值为空,就不会加入这条数据,而不是像mysql一样用null占位。

hbase表构成(按照数据定位的顺序):

行键(rowkey):每一行数据的唯一标识符,也是插入数据时的key值.表中数据按照rowkey的字典排序

列簇(列族)(columns family):一个列簇包含多个列。列簇:列名。一般不要定义多个列簇。

时间戳(timeStamp):默认是插入数据时的时间,用户可以显示定义。在每个 Cell中,不同版本的数据按照时间戳降序排序,即最新的数据排在最前面。

单元(cell):每个单元的数据,数据没有类型,全都是字节码形式存储

版本(version):修改一次,就会有一个这个数据的版本,默认保存保存一个版本,也就是当前的版本,一般会自定义3,即保存当前的和上次修改和上上次修改的数据。

特点:

数据类型单一:无类型定义,只有字符串

无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。

稀疏:对于为空(null)的列,并不占用存储空间。

顺序:每个 Cell中,不同版本的数据按照时间戳降序排序,即最新的数据排在最前面。

常用命令;

#查看帮助手册
hbase
#进入客户端,任意一台服务器
hbase shell
#一下命令全是进入客户端之后的:
#如果要删除输入的命令:ctrl+backspace
#全部帮助信息
help
#ddl组的帮助信息
help 'ddl'
#一个命令的帮助信息
help 'list'
#查看状态
status

DDL操作:

#ddl组
#区分大小写
#创建表,指定表名,和列簇
create 'student','base_info','course_info'
#指定版本号,关键字都是大写
create 'stu_version', {NAME=>'base_info',VERSIONS=>2},{NAME=>
'course_info',VERSIONS=>1}

#查看表
list
#查看表结构:describe '表名'
describe 'student'

#修改表
alter 'stu_version',{NAME=>'course_info',VERSIONS=>3}

#删除列簇
alter 'student',{NAME=>'course_info',METHOD=>'delete'}

#删除表:先禁用后删除
disable 'student'
drop 'student'

#查看表是否存在
exists 'student'
#查看是否被禁用
is_disabled 'stu_version'
#差看是否不禁用
is_enabled 'stu_version'
enable 'stu_version'

DML操作:

#添加数据 put表名,rowkey
put 'stu_version','1001','base_info:name','jack'
put 'stu_version','1001','base_info:age',22
put 'stu_version','1001','course_info:math','100'
put 'stu_version','1001','course_info:english','80'

put 'stu_version','1002','base_info:name','tom'
put 'stu_version','1002','base_info:age',23
put 'stu_version','1002','course_info:english','80'


put 'stu_version','1003','base_info:name','ella'
put 'stu_version','1003','base_info:age',22
put 'stu_version','1003','course_info:math','90'

#查询数据
scan 'stu_version'
#前两行
scan 'stu_version',{LIMIT=>2}
#查看base_info:name的前两行
scan 'stu_version',{COLUMNS=>'base_info:name',LIMIT=>2}
#根据行键获取一行的数据
get 'stu_version','1001'
#根据行键和列簇
get 'stu_version','1001','base_info'
get 'stu_version','1001','base_info:name'
#查看行数
count 'stu_version'


#修改数据
put 'stu_version','1001','course_info:math',90
get 'stu_version','1001','course_info:math'
#查看多个版本的数据
#根据时间戳,不好用
get 'stu_version','1001',{COLUMNS=>'course_info:math',TIMESTAMP=>1542251077928}
#获取最新的两个版本,按照时间戳降序排序
get 'stu_version','1001',{COLUMNS=>'course_info:math',VERSIONS=>2}


#删除数据
#删除列
delete 'stu_version','1001','course_info:math',1542251943336
#删除所有的版本
delete 'stu_version','1001','course_info:math'
#删除行
deleteall 'stu_version','1001'
scan 'stu_version'

#清空表
truncate 'stu_version'

如果有问题,请提出,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值