Hadoop Database简称HBase,是一个高可靠性、高性能、面向列,可伸缩的分布式存储系统。
利用HBase可在廉价的PC Server上搭建起大规模结构化存储集群。利用HDFS作为其文件存储系统、利用MapReduce处理HBase中海量数据、利用Zookeeper作为协调工具。
一:HBase主要包含三种属性:
主键:Row Key
用来检索记录的主键,访问HBase table中的行。只有三种方式:
1.通过单个Row Key访问
2.通过Row Key的range
3.通过全表扫描
列族:Column Family
在创建表时声明,一个列族可以包含多个列。列中数据都是以二进制形式存在,没有数据类型。(可以动态添加列)
时间戳:Timestamp
通过row和columns确定的为一个存储单元称为cell。每个cell都保存着同一份数据的多个版本。即一个cell里可以存着多个数据,每个数据都有版本号。各个版本通过时间戳来索引。
二:HBase的Shell语言总结:
create 'people' {NAME => 'info',VERSIONS =>3}, {NAME =>'data', VERSIONS =>1} //创建people表。两个列族分别为 info,data
1.列出所有表
list
2.描述people表结构
describe ‘people’
3.插入rk0001的主键,info列族下的name列中插入值xxx
put 'people', 'rk0001', 'info:name', 'xxx'
4.查看
scan 'people'
5.给列族添加一列sex,并赋值为man
put 'people' ,'rk0001', 'info:sex', 'man'
6.查看历史版本
scan 'people' ,{COLUMN => 'info', VERSIONS=3}
PS:
put 相同列的时候,原数据不是被覆盖,VERSIONS=3,意味着每次只能有三个版本的数据存在,当一个数据修改次数大于3时,第一个版本的数据将会消失(delete)。而只保存后三个版本的数据。在HMaster进程退出之前,能用scan 'people', {RAW =>true,VERSIONS =>10 } 查看到被delete的版本数据(所有版本数据)。
7.获取people表中row key 为rk0001的所有信息
get 'people' ,'rk0001'
8....info列族中所有信息
get ‘people', 'rk0001', 'info'
9....info列族中的name,age列
get 'people', 'rk0001', 'info:name','info:age'
10....获取info,data列族
get 'people' ,'rk0001','info','data'
OR
get 'people','rk0001',{COLUMN =>['info', 'data']}
11...
get 'people','rk0001',{COLUMN=>['info:name', 'data:age']}
12.获取列族,rowkey,版本号
get 'people','rk0001', {'COLUMN=> 'info', 'VERSIONS=>3}
OR
get 'people', 'rk0001', {'COLUMN=> 'info:name', VERSIONS=>2}
OR
get 'people', 'rk0001', {COLUMN=>'info:name', VERSIONS =>5, TIMERANGE=>[135..., 135...]}
13.获取表中rowkey,cell值为张三的信息
get 'people','rk0001', {FILTER=> "ValueFilter(=, 'binary:张三')"}
PS:
binary:指明数据以二进制方式编码
14.获取rowkey,列名中包含a字符的信息
get 'people' ,'rk0001',{FILTER =>"(QualifierFilter(=, 'substring :a'))"}
15.删
delete 'people','rk0001', 'info:name'
16.清空表
turncate 'people'
17.修
1.首先停用表
disable 'people'
2.添加两个列族 ’f1‘,’f2‘
alter 'people' ,NAME= >'f1'
alter 'people', NAME= >'f2'
3.启动表
enable 'people'
18.删除一个列族
alter 'people', NAME=> 'f1', METHOD=>'delete'
OR
alter 'people', 'delete'=>'f1'
19.删除表
1.首先停用表
disable 'people'
2.删
drop 'people'
三:HBase原理总结
HBase中的table表在行的方向上分割成多个HRegion,一个Region由[startkey,endkey)(前包含后排除)表示。每个HRegion分散在不同的RegionServer中。(不在HDFS中)。
PS:Region是分布式,负载均衡的基本单位。
HMaster和HRegionServer之间通过Zookeeper进行协调。