HBase基础
** HBase是Apache旗下一个高可靠性、高性能、面向列、可伸缩的分布式数据库。**
CAP理论
1.Consistency(一致性):数据一致更新,所有数据变动都是同步的。
2.Availability(可用性):良好的响应性能。
3.Partition tolerance(分区容错性):可靠性。
HBase存储结构
HBase采用key-value的形式存储数据,最基本的存储单位是列(column)。 表是由列族组成的,列族是由列组成的列是由key-value组成
空值不占用任何存储空间
每个region负责一定范围数据的读写和维护。这样即使一张巨大的表,由于被切割到不同的region,查询起来的延时也非常低。
每行都拥有唯一的行键(row key)来标定这个行的唯一性。row key是由用户通过自定义规则生成的一串不重复的字符串。所有的行按照row key的字典序进行排序存储。
时间戳
多个值之间使用版本号进行区分,默认是数据被添加时的时间戳
集群架构
MemStore是内存缓冲区
当MemStore的大小达到128M(hbase.hregion.memstore.flush.size)或者占用内存达到总内存的40%时会触发flush操作。
当StoreFile文件数量增长到3个后,会触发合并(Compact)操作
StoreFile在完成Compact操作后,体积会越来越大。当单个StoreFile的大小超过10G后,会触发分裂(Split)操作,把当前Region分裂成2个Region。新分裂出的Region 会被Hmaster迁移到其它的HRegionServer进行管理
HLog记录的日志数量达到32的时候,就会触发强制flush操作。
Hbase是由Client、Zookeeper、HMaster、HRegionServer和HDFS等几个组件组成,那么各自的功能如下:
Client:包含了访问HBase的接口,还有维护缓存加速HBase的访问。
Zookeeper:实现HMaster的高可用;监控HRegionServer的状态;存储.META.的地址。
HMaster:维护.META.;为HRegionServer分配Region;维护集群的负载均衡。
HRegionServer:处理客户端的读写请求;管理HMaster分配的Region。
HDSF:为HBase提供最终的底层数据存储服务。
HBase集群的启动和关闭
开启HBase集群: start-hbase.sh
关闭HBase集群: stop-hbase.sh
Shell
HBase Shell是HBase集群的命令行接口。
启用shell:hbase shell
create命令创建表:
create 'user', 'cf1'
list命令查看有哪些表:
list
describe命令来查看表属性:
describe 'user'
put命令来插入数据:
put 'user', 'rk0001', 'cf1:name', 'zhangsan'
scan来查看表数据:
scan 'user'
get来获取单元格数据:
get 'user', 'rk0001', 'cf1:name'
delete来删除单元格数据:
delete 'user', 'rk0002', 'cf1:age'
deleteall删除整行记录:
deleteall 'user', 'rk0001'
disable来停用表:
disable 'user'
启用表:
enable 'user'
drop删除表:
drop 'user'