** 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
ShellHbase 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'



