Hbase的列式存储和Parquet列式文件

说明

Parquet 列时存储和 Hbase的存储

Parquet结构

1.特点
   列式存储
   自带Schema
   具备Predicate Filter特性
      Predicate Filter。先判断一个文件中是否存在符合条件的数据,有则加载相应的数据,否则跳过
2.文件构成
 Parquet文件是以二进制方式存储的,不能直接读取和修改,文件中包括该文件的数据和schema
  Data Block是具体存放数据的区域
  一个文件由多个 row group 组成,
    一个 row group 包括了多个 column chunk   
	    一个 column chunck 就是某个 column 的所有数据集,其中一列只会存在一个 column chunk。被分割成多个 page,
		   一个page是最小的处理单元,可以被编码或者压缩
  一个Parquet文件的内容由Header、Data Block和Footer三部分组成
      Footer部分由File Metadata、Footer Length和Magic Number三部分组成
   Parquet文件对于每个page支持标准的压缩算法比如支持Snappy,gzip以及LZO压缩格式,也支持不压缩
分析和调优
   Parquet文件读写性能的参数主要有两个,dfs.blocksize和parquet.block.size
   parquet-tools 来分析 parquet 文件,Parquet是无法人类可读的,需要通过一些工具

Hbase 存储结构

面向列存储:HBase是面向列存储的。 K-V
  HBase 是一个稀疏的、分布式、持久、多维、排序的映射,它以行键(row key),列键(column key)和时间戳(timestamp)为索引
 1. HBase的数据模型 Data Model :
  1. Table:  
  2. Column Family: Column Family由column和值的集合。HBase里面每个Row由相同的Column Family组成,每个Column Family包含若干的column, 
  3. Column: Coumn 由column family和column qualifier组成。column qualifier使用:分隔。 
  4.  Row Key的设计就非常重要,设计Row Key的原则就是相互关联的行应该被存储在附近。 
  5. Cell: 一个Cell是Row, Column Family和Column Qualifier的综合。 {rowkey, column, version} 可以精确的指定一个cell。
 2. Hbase架构:
    RegionServer,理解为数据节点,存储数据的。  存放Regions的地方叫做RegionServer
	HMaster是 Master Server的实现,负责监控集群中的RegionServer实例
    Master RegionServer要实时的向Master报告信息 Master进程负责处理不同的RegionServer之间的Region的分发。 
	Zookeeper  作为分布式的协调
	HDFS       是Hbase运行的底层文件系统
3. Hbase的存储模型
  数据库的数据存储方式 探讨数据如何在磁盘上进行有效的组织
  HRegion
    HLog, 预写日志文件,也叫做WAL(write-ahead log)
    HStore
     (1)HStore 对应了table中的一个CF列族. 
        (2)HStore 包含 MemStore 和 StoreFile (底层实现是HFile).
        HFile 真实的数据存储文件- ,HBase最底层的文件组织形式
     	HFile 物理结构 
        HFile由 DataBlock 、Meta信息(Index、BloomFilter)、Info等信息组成。
		HFile V1的逻辑数据组织格式 DataBlock 区域、MetaBlock(bloomfilter) 
		                与FileInfo、DataBlockIndex、MetaBlockIndex、Trailer分离
  	    HFile V2的逻辑数据组织格式
            文件主要分为四个部分: 
  	    	    Scanned block section
  	    	    Non-scanned block section
                  Opening-time data section
              Trailer
  	 HFile 索引流程图
4.行键设计和Hbase优化
5.版本:参考 https://archive.apache.org/dist/hbase/
   2.3.3	2020/11/02
   2.2.6	2020/09/04
   1.6.0	2020/03/06
   1.4.13	2020/02/29
   1.2.6/                         2018-05-04 17:41
   1.3.1/                         2017-10-04 10:53  
   hbase-1.3.6/                   2019-10-20 03:29
   0.98.12.1/                     2015-05-21

Hbase和Parquet比较

比较
   Parquet的 Row group                        相当于HBase的 HRegion
   Parquet的 colum trunk                      相当于HBase的 Store 
   Parquet的 colum trunk 则由最小单位page存储   HBase的Store由 StoreFile 组成
   Parquet的 colum trunk 的每个page则存储了一个 三元组 (Repetition Level,Definition Level,value)。通过这个三元组page结构,
    Parquet做到了对复杂的嵌套数据结构序列化的支持
  而 HBase StoreFile仅是存储了某一特定列的阀值范围内的values集合
 两者之间的主要区别,在page 和HFile文件之间的比较

文件存储

HDFS:
    Block 是 hdfs 中的最小的存储单元,使得其能将大文件切分为多个小文件