• 数据存储_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 中的最小的存储单元,使得其能将大文件切分为多个小文件
    

    参考:

    粗略对比Parquet和Hbase数据存储结构 https://blog.csdn.net/sudo5zzb/article/details/51276557
    Parquet的那些事(一)基本原理 https://blog.csdn.net/zwgdft/article/details/104582229/
    hbase实践之HFile结构  https://www.cnblogs.com/small-k/p/9715810.html
    Data Model  http://hbase.apache.org/book.html#datamodel
    http://hbase.apache.org/downloads.html
  • 相关阅读:
    面条代码 vs. 馄沌代码
    GraphQL 到底怎么用?看看这个例子就知道了
    程序员难逃二八法则,如何晋升为头部 20% 玩家?
    正则匹配负正数和负小数
    js、Jquery处理自动计算的输入框事件
    mobile easyui兼容实体数据(tree插件为例)
    framework7中一行的字如果过多就省略号显示的CSS写法
    PHP获取系统时间不对的解决办法(转载)
    BZOJ 3156: 防御准备
    P4098 [HEOI2013]ALO
  • 原文地址:https://www.cnblogs.com/ytwang/p/14048044.html
Copyright © 2020-2023  润新知