hbase
hbase 是一款开源的,分布式的,版本化的,非关系型(NoSql)数据库
NoSql = not only sql
hive是数据仓库,但是使用的是类sql语句
hbase是数据库,但是不用sql语句
特点:
1.存储量大
2.数据稀疏
3.速度快:数据量比较大的情况下,不是特别慢。
4.数据无类型(单一类型)
应用场景:
1.适合做海量数据的存和取
2.如果数据量不超过千万级别,不建议使用hbase。
3.hbase不适合做细腻的数据分析 where
hbase的表结构
- 表(table):
hbase以表为单位组织数据 - 列族(columnFamily):
由不定多个具有相同意义的列组成一个列族,一个表中可以有多个列族 - 列(column):
列族下的具体的某一列,一个表当中可以存在数百万列。 - 行键(rowKey):
行是由一个Rowkey和多个列族组成,
一行只能有一个行键,用来做当前行的唯一标识,表中可以有数十亿行 - 单元格(cell):
由rowkey,column和columnFamily唯一确定一个单元格 - 时间戳(timestamp):
同一个单元格下可以保存历史版本,通过时间戳进行保存。
hbase的整体架构
- client:
客户端,提交请求,发送数据 - HMaster:
负责管理,HRegionServer,HRegion。。。 - HRegionServer:
维护HRegion,负责切分过大的HRegion,真正执行数据的增删改查 - HRegion:
每个HRegion内会存储一到多行数据,
最原始状态,只有一个HRegion
随着数据量不断增大,HRegion的数量也会逐渐变多
HRegion的数量大到一定程度的时候,就会把数据放到其他的HRegionServer中 - Store:
每个store存的是一个列族 - MemStore:
内存缓冲区,先把数据写入到这里
达到一定的阈值后,会启动flashcache进程将数据写入storeFile中
每次写入生成一个StoreFile - StoreFile:
当StoreFile数量达到一定阈值后,系统会进行合并,并删除一些旧版本的数据
当整个容量达到一定阈值后,会