當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]揭秘:RCFile高效存儲結構

本文介紹了Facebook公司數(shù)據(jù)分析系統(tǒng)中的RCFile存儲結構,該結構集行存儲和列存儲的優(yōu)點于一身,在MapReduce環(huán)境下的大規(guī)模數(shù)據(jù)分析中扮演重要角色。

  Facebook曾在2010 ICDE(IEEE International Conference on Data Engineering)會議上介紹了數(shù)據(jù)倉庫Hive。Hive存儲海量數(shù)據(jù)在Hadoop系統(tǒng)中,提供了一套類數(shù)據(jù)庫的數(shù)據(jù)存儲和處理機制。它采用類SQL語言對數(shù)據(jù)進行自動化管理和處理,經過語句解析和轉換,最終生成基于Hadoop的MapReduce任務,通過執(zhí)行這些任務完成數(shù)據(jù)處理。圖1顯示了Hive數(shù)據(jù)倉庫的系統(tǒng)結構。

  

 

  圖1 Hive數(shù)據(jù)倉庫的系統(tǒng)結構

  基于MapReduce的數(shù)據(jù)倉庫在超大規(guī)模數(shù)據(jù)分析中扮演了重要角色,對于典型的Web服務供應商,這些分析有助于它們快速理解動態(tài)的用戶行為及變化的用戶需求。數(shù)據(jù)存儲結構是影響數(shù)據(jù)倉庫性能的關鍵因素之一。Hadoop系統(tǒng)中常用的文件存儲格式有支持文本的TextFile和支持二進制的SequenceFile等,它們都屬于行存儲方式。Facebook工程師發(fā)表的RCFile: A Fast and Spaceefficient Data Placement Structure in MapReducebased Warehouse Systems一文,介紹了一種高效的數(shù)據(jù)存儲結構——RCFile(Record Columnar File),并將其應用于Facebook的數(shù)據(jù)倉庫Hive中。與傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)存儲結構相比,RCFile更有效地滿足了基于MapReduce的數(shù)據(jù)倉庫的四個關鍵需求,即Fast data loading、Fast query processing、Highly efficient storage space utilization和Strong adaptivity to highly dynamic workload patterns。

  數(shù)據(jù)倉庫的需求

  基于Facebook系統(tǒng)特征和用戶數(shù)據(jù)的分析,在MapReduce計算環(huán)境下,數(shù)據(jù)倉庫對于數(shù)據(jù)存儲結構有四個關鍵需求。

  Fast data loading

  對于Facebook的產品數(shù)據(jù)倉庫而言,快速加載數(shù)據(jù)(寫數(shù)據(jù))是非常關鍵的。每天大約有超過20TB的數(shù)據(jù)上傳到Facebook的數(shù)據(jù)倉庫,由于數(shù)據(jù)加載期間網(wǎng)絡和磁盤流量會干擾正常的查詢執(zhí)行,因此縮短數(shù)據(jù)加載時間是非常必要的。

  Fast query processing

  為了滿足實時性的網(wǎng)站請求和支持高并發(fā)用戶提交查詢的大量讀負載,查詢響應時間是非常關鍵的,這要求底層存儲結構能夠隨著查詢數(shù)量的增加而保持高速的查詢處理。

  Highly efficient storage space utilization

  高速增長的用戶活動總是需要可擴展的存儲容量和計算能力,有限的磁盤空間需要合理管理海量數(shù)據(jù)的存儲。實際上,該問題的解決方案就是最大化磁盤空間利用率。

  Strong adaptivity to highly dynamic workload patterns

  同一份數(shù)據(jù)集會供給不同應用的用戶,通過各種方式來分析。某些數(shù)據(jù)分析是例行過程,按照某種固定模式周期性執(zhí)行;而另一些則是從中間平臺發(fā)起的查詢。大多數(shù)負載不遵循任何規(guī)則模式,這需要底層系統(tǒng)在存儲空間有限的前提下,對數(shù)據(jù)處理中不可預知的動態(tài)數(shù)據(jù)具備高度的適應性,而不是專注于某種特殊的負載模式。

  MapReduce存儲策略

  要想設計并實現(xiàn)一種基于MapReduce數(shù)據(jù)倉庫的高效數(shù)據(jù)存儲結構,關鍵挑戰(zhàn)是在MapReduce計算環(huán)境中滿足上述四個需求。在傳統(tǒng)數(shù)據(jù)庫系統(tǒng)中,三種數(shù)據(jù)存儲結構被廣泛研究,分別是行存儲結構、列存儲結構和PAX混合存儲結構。上面這三種結構都有其自身特點,不過簡單移植這些數(shù)據(jù)庫導向的存儲結構到基于MapReduce的數(shù)據(jù)倉庫系統(tǒng)并不能很好地滿足所有需求。

  行存儲

  如圖2所示,基于Hadoop系統(tǒng)行存儲結構的優(yōu)點在于快速數(shù)據(jù)加載和動態(tài)負載的高適應能力,這是因為行存儲保證了相同記錄的所有域都在同一個集群節(jié)點,即同一個HDFS塊。不過,行存儲的缺點也是顯而易見的,例如它不能支持快速查詢處理,因為當查詢僅僅針對多列表中的少數(shù)幾列時,它不能跳過不必要的列讀取;此外,由于混合著不同數(shù)據(jù)值的列,行存儲不易獲得一個極高的壓縮比,即空間利用率不易大幅提高。盡管通過熵編碼和利用列相關性能夠獲得一個較好的壓縮比,但是復雜數(shù)據(jù)存儲實現(xiàn)會導致解壓開銷增大。

  

 

  圖2 HDFS塊內行存儲的例子[!--empirenews.page--]列存儲

 

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

  

 

  圖3 HDFS塊內列存儲的例子

  PAX混合存儲

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

  RCFile的設計與實現(xiàn)

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

  

 

  圖4 HDFS塊內RCFile方式存儲的例子[!--empirenews.page--]

  數(shù)據(jù)格式

  RCFile在HDFS分布式文件系統(tǒng)之上設計并實現(xiàn),如圖4所示,RCFile按照下面的數(shù)據(jù)格式來存儲一張表。

  RCFile基于HDFS架構,表格占用多個HDFS塊。

  每個HDFS塊中,RCFile以行組為基本單位來組織記錄。也就是說,存儲在一個HDFS塊中的所有記錄被劃分為多個行組。對于一張表,所有行組大小都相同。一個HDFS塊會有一個或多個行組。

  一個行組包括三個部分。第一部分是行組頭部的同步標識,主要用于分隔HDFS塊中的兩個連續(xù)行組;第二部分是行組的元數(shù)據(jù)頭部,用于存儲行組單元的信息,包括行組中的記錄數(shù)、每個列的字節(jié)數(shù)、列中每個域的字節(jié)數(shù);第三部分是表格數(shù)據(jù)段,即實際的列存儲數(shù)據(jù)。在該部分中,同一列的所有域順序存儲。從圖4可以看出,首先存儲了列A的所有域,然后存儲列B的所有域等。壓縮方式

 

  RCFile的每個行組中,元數(shù)據(jù)頭部和表格數(shù)據(jù)段分別進行壓縮。

  對于所有元數(shù)據(jù)頭部,RCFile使用RLE(Run Length Encoding)算法來壓縮數(shù)據(jù)。由于同一列中所有域的長度值都順序存儲在該部分,RLE算法能夠找到重復值的長序列,尤其對于固定的域長度。

  表格數(shù)據(jù)段不會作為整個單元來壓縮;相反每個列被獨立壓縮,使用Gzip壓縮算法。RCFile使用重量級的Gzip壓縮算法,是為了獲得較好的壓縮比,而不使用RLE算法的原因在于此時列數(shù)據(jù)非排序。此外,由于Lazy壓縮策略,當處理一個行組時,RCFile不需要解壓所有列。因此,相對較高的Gzip解壓開銷可以減少。

  盡管RCFile對表格數(shù)據(jù)的所有列使用同樣的壓縮算法,不過如果使用不同的算法來壓縮不同列或許效果會更好。RCFile將來的工作之一可能就是根據(jù)每列的數(shù)據(jù)類型和數(shù)據(jù)分布來自適應選擇最好的壓縮算法。

  數(shù)據(jù)追加

  RCFile不支持任意方式的數(shù)據(jù)寫操作,僅提供一種追加接口,這是因為底層的HDFS當前僅僅支持數(shù)據(jù)追加寫文件尾部。數(shù)據(jù)追加方法描述如下。

  RCFile為每列創(chuàng)建并維護一個內存column holder,當記錄追加時,所有域被分發(fā),每個域追加到其對應的column holder。此外,RCFile在元數(shù)據(jù)頭部中記錄每個域對應的元數(shù)據(jù)。

  RCFile提供兩個參數(shù)來控制在刷寫到磁盤之前,內存中緩存多少個記錄。一個參數(shù)是記錄數(shù)的限制,另一個是內存緩存的大小限制。

  RCFile首先壓縮元數(shù)據(jù)頭部并寫到磁盤,然后分別壓縮每個column holder,并將壓縮后的column holder刷寫到底層文件系統(tǒng)中的一個行組中。

  數(shù)據(jù)讀取和Lazy解壓

  在MapReduce框架中,mapper將順序處理HDFS塊中的每個行組。當處理一個行組時,RCFile無需全部讀取行組的全部內容到內存。

  相反,它僅僅讀元數(shù)據(jù)頭部和給定查詢需要的列。因此,它可以跳過不必要的列以獲得列存儲的I/O優(yōu)勢。例如,表tbl(c1, c2, c3, c4)有4個列,做一次查詢“SELECT c1 FROM tbl WHERE c4 = 1”,對每個行組,RCFile僅僅讀取c1和c4列的內容。在元數(shù)據(jù)頭部和需要的列數(shù)據(jù)加載到內存中后,它們需要解壓。元數(shù)據(jù)頭部總會解壓并在內存中維護直到RCFile處理下一個行組。然而,RCFile不會解壓所有加載的列,相反,它使用一種Lazy解壓技術。

  Lazy解壓意味著列將不會在內存解壓,直到RCFile決定列中數(shù)據(jù)真正對查詢執(zhí)行有用。由于查詢使用各種WHERE條件,Lazy解壓非常有用。如果一個WHERE條件不能被行組中的所有記錄滿足,那么RCFile將不會解壓WHERE條件中不滿足的列。例如,在上述查詢中,所有行組中的列c4都解壓了。然而,對于一個行組,如果列c4中沒有值為1的域,那么就無需解壓列c1。

  行組大小

  I/O性能是RCFile關注的重點,因此RCFile需要行組夠大并且大小可變。行組大小和下面幾個因素相關。

  行組大的話,數(shù)據(jù)壓縮效率會比行組小時更有效。根據(jù)對Facebook日常應用的觀察,當行組大小達到一個閾值后,增加行組大小并不能進一步增加Gzip算法下的壓縮比。

  行組變大能夠提升數(shù)據(jù)壓縮效率并減少存儲量。因此,如果對縮減存儲空間方面有強烈需求,則不建議選擇使用小行組。需要注意的是,當行組的大小超過4MB,數(shù)據(jù)的壓縮比將趨于一致。

  盡管行組變大有助于減少表格的存儲規(guī)模,但是可能會損害數(shù)據(jù)的讀性能,因為這樣減少了Lazy解壓帶來的性能提升。而且行組變大會占用更多的內存,這會影響并發(fā)執(zhí)行的其他MapReduce作業(yè)??紤]到存儲空間和查詢效率兩個方面,F(xiàn)acebook選擇4MB作為默認的行組大小,當然也允許用戶自行選擇參數(shù)進行配置。

  小結

  本文簡單介紹了RCFile存儲結構,其廣泛應用于Facebook公司的數(shù)據(jù)分析系統(tǒng)Hive中。首先,RCFile具備相當于行存儲的數(shù)據(jù)加載速度和負載適應能力;其次,RCFile的讀優(yōu)化可以在掃描表格時避免不必要的列讀取,測試顯示在多數(shù)情況下,它比其他結構擁有更好的性能;再次,RCFile使用列維度的壓縮,因此能夠有效提升存儲空間利用率。

  為了提高存儲空間利用率,F(xiàn)acebook各產品線應用產生的數(shù)據(jù)從2010年起均采用RCFile結構存儲,按行存儲(SequenceFile/TextFile)結構保存的數(shù)據(jù)集也轉存為RCFile格式。此外,Yahoo公司也在Pig數(shù)據(jù)分析系統(tǒng)中集成了RCFile,RCFile正在用于另一個基于Hadoop的數(shù)據(jù)管理系統(tǒng)Howl(http://wiki.apache.org/pig/Howl)。而且,根據(jù)Hive開發(fā)社區(qū)的交流,RCFile也成功整合加入其他基于MapReduce的數(shù)據(jù)分析平臺。有理由相信,作為數(shù)據(jù)存儲標準的RCFile,將繼續(xù)在MapReduce環(huán)境下的大規(guī)模數(shù)據(jù)分析中扮演重要角色。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉