新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 揭秘:RCFile高效存儲(chǔ)結(jié)構(gòu)

揭秘:RCFile高效存儲(chǔ)結(jié)構(gòu)

作者: 時(shí)間:2011-05-09 來源:網(wǎng)絡(luò) 收藏

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

本文引用地址:http://www.butianyuan.cn/article/150786.htm

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

  

79_110429153352_1.jpg

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

  基于MapReduce的數(shù)據(jù)倉庫在超大規(guī)模數(shù)據(jù)分析中扮演了重要角色,對(duì)于典型的Web服務(wù)供應(yīng)商,這些分析有助于它們快速理解動(dòng)態(tài)的用戶行為及變化的用戶需求。數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)是影響數(shù)據(jù)倉庫性能的關(guān)鍵因素之一。Hadoop系統(tǒng)中常用的文件存儲(chǔ)格式有支持文本的TextFile和支持二進(jìn)制的SequenceFile等,它們都屬于行存儲(chǔ)方式。Facebook工程師發(fā)表的RCFile: A Fast and Spaceefficient Data Placement Structure in MapReducebased Warehouse Systems一文,介紹了一種的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)——RCFile(Record Columnar File),并將其應(yīng)用于Facebook的數(shù)據(jù)倉庫Hive中。與傳統(tǒng)數(shù)據(jù)庫的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)相比,RCFile更有效地滿足了基于MapReduce的數(shù)據(jù)倉庫的四個(gè)關(guān)鍵需求,即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計(jì)算環(huán)境下,數(shù)據(jù)倉庫對(duì)于數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)有四個(gè)關(guān)鍵需求。

  Fast data loading

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

  Fast query processing

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

  Highly efficient storage space utilization

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

  Strong adaptivity to highly dynamic workload patterns

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

  MapReduce存儲(chǔ)策略

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

  行存儲(chǔ)

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

  

79_110429153424_1.jpg

  圖2 HDFS塊內(nèi)行存儲(chǔ)的例子


上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉