hive 适⽤于批量数据处理,
hbase 使⽤哈希表访问数据,适⽤实时数据随机访问的场景【⾼并发,简单条件,随机查询】
⼀、数据结构术语
namespace
命名空间
类⽐“数据库”
table
表
row
⾏
由“rowkey”与多个“列族”组成
column family(CF)
列族
由若⼲个“列限定符”组成。
⽐如:BaseInfo 列族可以包括 name,age,gender 等列限定符
column qualifier
列限定符
HBase 中的“列”由“列族”与“列限定符”唯⼀指定
cell
单元格
单元格由 rowkey 与 column 唯⼀定位,单元格中存放 value 与⼀个 timestamp
timestamp
版本号(时间戳)
⽤于保存单元格的最新修改时间,每个单元格都有。
单元格不同版本的值按照版本号逆序排列,即最新的排在最前⾯。
每⾏按照 rowkey 进⾏ 字典顺序 排列。
⼆、架构设计术语
Client
客户端
HMaster
管理器
管理增删改查操作,管理 HRegionServer 与 HRegion(实现负载均衡)
HRegionServer
区域服务器
处理 IO 请求,处理 HRegion 切分,
HRegion
区域 表在
⽔平⽅向 上的切分,具备表的全部列,某列过⼤时就会被切分。
HStore
存储 分为 MemStore 与 StoreFile 两个部分,对应⼀个 列族
数据⾸先写⼊位于内存的 MemStore,当 MemStore 满了就 flush 到 StoreFile;
当 StoreFile ⽂件数过多,触发 Compact 操作【StoreFile 的压缩操作,被标记为删除的⾏真正删除,被标记为修改的单元格真正修改, 形成⼀个⼤的 StoreFile】;
当 StoreFile 过⼤,所在 HRegion 被切分为两个新的 HRegion【原 HRegion 直接抛弃】。
MemStore
内存存储 默认 128MB。
有独⽴线程执⾏ flush 操作。
StoreFile
存储⽂件
底层是 HFile ⽂件
分为最⼤合并(major compaction)与最⼩合并(minor compaction)两种。
HFile
⽂件
key-value 格式存储⽂件,是⼆进制⽂件。
Minor Compaction
⼩⽂件压缩合并
将部分⼩⽂件压缩合并为⼀个⼤⽂件
major Compaction
全量压缩
将所有⽂件压缩为⼀个⼤⽂件,由于发⽣⼤量磁盘读写,更适合⽆⼤量访问时执⾏。 WAL(write ahead log)
先写⽇志(先于写⼊ MemStore)
解决数据⽆法持久化的问题。这时若 MemStore 挂了,可以通过 replay WAL log 的⽅式进⾏恢复。
HLog ⽇志 HRegionServer 下所有 HRegion 共⽤。