1. 程式人生 > 實用技巧 >資料儲存_HBase和Parquet結構

資料儲存_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