hbase的数据模型
行键,时间戳,列簇。
列簇是表schema的一部分,而列不是,所以动态加列可以不用改变表结构。每一个列簇生成一个文件,就相当于做了分表。
cell:由rowkey、columnfamily、version唯一确定的单元。里面的数据是没有类型的,全部都是字节码形式存储。
TimeStamp:每个cell中保存着同一个数据的多个版本,版本通过时间戳索引。用户不创建系统也会自动创建。
rowkey:用来检索记录的主键。
hbase命令
hbase shell
(这里打字不可以删除很烦)
help(查看帮助文档)
list(查看所有的表)
create 'user','info1','info2'(表名,列簇)
describe 'user'
exists 'user'
删除表:
disable 'user'
is_enabled 'user'
drop user
hbase增删改查:
hbase中更新记录就是重写一遍,没有修改,都是追加。相同的id重新对某列进行添加就是修改了。
put 'user','1','info1:name','guo'
scan 'user'(查看整个表的信息)
put 'user','2','info1:name','guo'
put 'user','2','info2:age','100'
get 'user','2'
get 'user','2','info1:name'
count 'user'(查看记录的条数)
delete 'user','2','info1:name'
deleteall 'user','2'
truncate 'user'(清空,truncate=drop+create)
hbase依赖zookeeper
bin/zkCli.sh
ls /
[hbase, zookeeper]
ls /hbase
[meta-region-server, backup-masters, table, draining, region-in-transition, running, table-lock, master, namespace, hbaseid, online-snapshot, replication, splitWAL, recovering-regions, rs, flush-table-proc]
ls /hbase/table
[hbase:meta, hbase:namespace]
zookeeper几个端口的意义:2181,访问端口。2888,数据同步端口。3888,同步心跳端口。
hbase查询数据通过zookeeper(有点类似于namenode)。Hmaster不做数据管理。
网友评论