HBase
HBase 基本工作原理
RDBMS 的局限性
- 大数据
- 灵活多变的表结构
HBase在Hadoop中的生态环境
- 构建于HDFS之上
- 为上层应用提供结构化、班级勾画含量数据存储访问能力
- 结构化数据(即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据)
- 半结构化数据:非关系模型的,有基本固定结构模式的数据,例如日志文件、XML 文档、JSON 文档、Email 等
- 非结构化数据:没有固定模式的数据,如 WORD、PDF、PPT、EXL,各种格式的图片、视频等
- 可与MapRecuce 协同工作,为MapReduce 停工数据输入输出,以完成数据并行化处理
HBase 数据模型
一个分布式多维表,表中数据通过:
- 一个行关键字
- 一个列关键字
- 一个时间戳
进行索引和定位
HBase 物理存储格式
- 按稀疏矩阵,按行分割,按列族存储
- 列为空得不存储,节省空间
HBase基本架构
- 有一个MasterServer和一组子表数据区服务器RegionSever构成,分别存储一个子表 Region
HBase 数据管理办法
- 每个子表数据区Region,由很多数据存储块Store构成
- 每个stroe数据块又由存放在内存中得memStore和当放在文件中StoreDile构成
- 一个列簇对一应一个store
HBase子表数据存储与子表服务器
HBase 数据访问
- 查询数据时,子表先查memStore 。如果没有,在查磁盘上的StoreFile。每个StoreFile都有类似B树的结构,运行能进行快速的数据查询。
- StoreFile将定时压缩,多个压缩为一个
- 两个小的子表可以合并
- 子表大到超过某个阈值,子表服务器就需要把他分割成两个新的子表。
HBase子表服务器和主服务器
HBase数据记录的查询定位
- 描述所有子表和子表中数据块的元数据都存放在专门的元数据表中,并存储在特殊的子表中。子表元数据会不断增长,因此可能需要多个子表来保存
- 所有元数据子表的元数据都保存在根子表中。主服务器会扫描元子表,从而获得元数据子表的位置,在进而扫描这些元数据子表,即可获得所寻找子表的位置。
HBase使用三层类似B+树结构来保存Region位置
- 第一层是保存在zookeeper里面的文件,他持有 root region的位置
- 第二层root region是.META.表的第一个region,其中保存了.META.表其它region的位置。通过root region,我们就可以访问.META.表的数据
- .META.是第三层,它是一个特殊的表,保存了HBase中所有数据表的region 位置信息