資料儲存_HBase和Parquet結構
阿新 • • 發佈:2020-11-27
說明
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