HBase概述
1)构建在HDFS之上
2) 分布式: 分而治之
3)面向列:
HBase特点
1)大
2)面向列:数据构成,列族(多个列)
3)稀疏:null
4)数据类型单一:string
5)无模式: 每行数据所对应的列是可以不同
user: id name password age info.... 在创建表的时候就需要指定的
6)数据多版本
Cell
HBase和RDBMS的区别
1)phoenix、hive&hbase
2)hbase在上亿条的数据查询可以控制在毫秒或者秒内(rowkey的设计好坏)
rowkey + cf + col + timestamp ==> value
xx1 + basic_info + name + t1(默认就是时间戳) ==> zhangsan
xx1 + private_info + age + t1 ==> 25
HBase核心术语
1)rowkey 主键
对应于RDBMS的主键
字符串,字典顺序存储,在HBase内存保存为字节数组
rowkey查询方式:单个rowkey、range、全表扫描
2) column family/cf 列族
列族是在创建表的时候指定,一个列族包含多个列
private_info:age private_info:tel
basic_info:name
3) column 列
属于某个cf
4) timestamp 时间戳 & cell
hbase中通过row和columns来确定一个cell
每个cell里面可以保存同一份数据的多个版本
在写入数据时,时间戳可以由hbase自动赋值,也可以手工赋值
{rowkey、cf、column、version} ==> Cell
HBase物理模型
1) Region:hbase中在行的方向上进行切割
Region1: rowkey:1-100
Region2: rowkey:101-200
2) RegionServer:
管理Region
一个Region在同一时刻只能被一个RegionServer管理
一个RegionServer能够管理多个Region
拆分Region
1)并行化
2)理解时可以对比MapReduce并行处理
HBase架构
1)HDFS
2)Client:
与HBase进行读写操作
可以有多个client来访问HBase
3) ZK
保证集群中只有一个HMaster
监控我们RegionServer的上线或者下线,并实时通知给Master
4) HMaster
为RegionServer分配Region
负责RegionServer的负载均衡
发现RegionServer失效了,会把该RegionServer上的Region分配到其他的RegionServer上去
5)HRegionServer
维护Region,处理对这些Region的IO请求
RegionServer负责切分在运行过程中变得过大的Region
6)HRegion
按行对rowkey对应的数据进行拆分
7)HLog
记录操作记录,为了容错处理
$HBASE_HOME/bin/hbase shell
help
hbase shell的使用
status
version
创建表
create 'member','member_id','address','info'
member:表名
member_id、address、info: cf
查看所有的表: list
查看表的描述信息:describe 'member'
删除一个cf:
alter 'member','delete'=>'member_id'
如果是低版本,是不能直接删除一个cf,
1)disable 表
2)删除cf
查看表是否存在
exists 'member'删除表
create 'tmp_table','info'
disable 'tmp_table'
drop 'tmp_table'
插入数据: put 表名,rowkey,cf:column,value
put 'member','zhangsan','info:age','27'
put 'member','zhangsan','info:birthday','1990-06-01'
put 'member','zhangsan','info:company','company1'
put 'member','zhangsan','address:country','china'
put 'member','zhangsan','address:province','beijing'
put 'member','zhangsan','address:city','beijing'
put 'member','lisi','info:age','28'
put 'member','lisi','info:birthday','1991-06-01'
put 'member','lisi','info:company','company2'
put 'member','lisi','address:country','china'
put 'member','lisi','address:province','guangdong'
put 'member','lisi','address:city','shenzhen'
put 'member','lisi','info:favorite','shopping'
获取rowkey:
get 表名,rowkey
get 表名,rowkey,cf
更新: put 表名,rowkey,cf:column,value
put 'member','zhangsan','info:age','18'根据指定的版本获取值: get 表名,rowkey,{COLUMN=>'cf:column',TIMESTAMP=>xxx}
hbase: tablename + rowkey + cf:column + timestamp1 ==> value1
hbase: tablename + rowkey + cf:column + timestamp2 ==> value2
hbase: tablename + rowkey + cf:column + timestamp3 ==> value3
删除指定的cf:column
delete 表名,rowkey,cf:column
查询表的记录数: count 表名
删除一整行: deleteall 'member','lisi'
将整张表清空: truncate 表名
版权声明:本文为qq_37392932原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。