數據存儲_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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM