新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 揭秘:RCFile高效存儲結構

        揭秘:RCFile高效存儲結構

        作者: 時間:2011-05-09 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/150786.htm

          圖3顯示了在HDFS上按照列組表格的例子。在這個例子中,列A和列B在同一列組,而列C和列D分別存儲在單獨的列組。查詢時列存儲能夠避免讀不必要的列,并且壓縮一個列中的相似數據能夠達到較高的壓縮比。然而,由于元組重構的較高開銷,它并不能提供基于Hadoop系統的快速查詢處理。列存儲不能保證同一記錄的所有域都存儲在同一集群節點,例如圖2的例子中,記錄的4個域存儲在位于不同節點的3個HDFS塊中。因此,記錄的重構將導致通過集群節點網絡的大量數據傳輸。盡管預先分組后,多個列在一起能夠減少開銷,但是對于高度動態的負載模式,它并不具備很好的適應性。除非所有列組根據可能的查詢預先創建,否則對于一個查詢需要一個不可預知的列組合,一個記錄的重構或許需要2個或多個列組。再者由于多個組之間的列交疊,列組可能會創建多余的列數據存儲,這導致存儲利用率的降低。

          

        79_110429153503_1.jpg

          圖3 HDFS塊內列存儲的例子

          PAX混合存儲

          PAX存儲模型(用于Data Morphing存儲技術)使用混合存儲方式,目的在于提升CPU Cache性能。對于記錄中來自不同列的多個域,PAX將它們放在一個磁盤頁中。在每個磁盤頁中,PAX使用一個迷你頁來存儲屬于每個列的所有域,并使用一個頁頭來存儲迷你頁的指針。類似于行存儲,PAX對多種動態查詢有很強的適應能力。然而,它并不能滿足大型分布式系統對于高存儲空間利用率和快速查詢處理的需求,原因在于:首先,PAX沒有數據壓縮的相關工作,這部分與Cache優化關系不大,但對于大規模數據處理系統是非常關鍵的,它提供了列維度數據壓縮的可能性;其次,PAX不能提升I/O性能,因為它不能改變實際的頁內容,該限制使得大規模數據掃描時不易實現快速查詢處理;再次,PAX用固定的頁作為數據組織的基本單位,按照這個大小,在海量數據處理系統中,PAX將不會有效存儲不同大小類型的數據域。本文介紹的是RCF i l e 數據存儲在Hadoop系統上的實現。該強調:第一,RCFile存儲的表是水平劃分的,分為多個行組, 每個行組再被垂直劃分, 以便每列單獨存儲;第二,RCFile在每個行組中利用一個列維度的數據壓縮,并提供一種Lazy解壓(decompression)技術來在查詢執行時避免不必要的列解壓;第三,RCFile支持彈性的行組大小,行組大小需要權衡數據壓縮性能和查詢性能兩方面。

          RCFile的設計與實現

          RCFile(Record Columnar File)存儲遵循的是“先水平劃分,再垂直劃分”的設計理念,這個想法來源于PAX。它結合了行存儲和列存儲的優點:首先,RCFile保證同一行的數據位于同一節點,因此元組重構的開銷很低;其次,像列存儲一樣,RCFile能夠利用列維度的數據壓縮,并且能跳過不必要的列讀取。圖4是一個HDFS塊內RCFile方式存儲的例子。

          

        79_110429153552_1.jpg

          圖4 HDFS塊內RCFile方式存儲的例子



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 麻江县| 顺平县| 禄劝| 上虞市| 敦煌市| 闽清县| 新源县| 铅山县| 义马市| 报价| 迁西县| 喀喇| 夏河县| 酉阳| 祥云县| 金塔县| 福泉市| 九龙县| 郸城县| 延津县| 永丰县| 山西省| 灌云县| 克什克腾旗| 洪江市| 杭锦旗| 汉沽区| 梅州市| 台东县| 青州市| 大荔县| 虎林市| 柳江县| 舟曲县| 容城县| 锡林郭勒盟| 文安县| 扶余县| 平阴县| 茶陵县| 南漳县|