專利名稱:海量數(shù)據(jù)的分布式存儲方法
技術(shù)領(lǐng)域:
本發(fā)明屬于云計(jì)算技術(shù)領(lǐng)域,具體涉及海量數(shù)據(jù)的存儲技術(shù)。
背景技術(shù):
Clouding技術(shù)引起了ー場IT產(chǎn)業(yè)界技術(shù)革命,為IT行業(yè)指明了未來發(fā)展的方向。云計(jì)算服務(wù)被各國政府視為國家軟件產(chǎn)業(yè)發(fā)展的新契機(jī)。業(yè)內(nèi)外人士對其發(fā)展情況和實(shí)用價(jià)值都表現(xiàn)出非常的關(guān)注。
對于海量數(shù)據(jù)而言,Database Server的CPU、IO吞吐等性能都將面臨嚴(yán)峻的考驗(yàn),由于網(wǎng)絡(luò)資源迅速的不斷膨脹,數(shù)據(jù)庫服務(wù)器一方面要解決存儲空間、訪問速度及清除網(wǎng)絡(luò)瓶頸等問題,另一方面還要完成所有數(shù)據(jù)的挖掘過程,這樣的巨大壓カ是無法適應(yīng)網(wǎng)絡(luò)發(fā)展需求的。同吋,隨著每天實(shí)際應(yīng)用中不得不繼續(xù)增加的文本數(shù)據(jù),這即使是針對已經(jīng)完成預(yù)處理的文本資料的數(shù)據(jù)挖掘,也超出了現(xiàn)有小型處理機(jī)的承受范圍。處理海量數(shù)據(jù)主要面臨以下問題
I)過大的數(shù)據(jù)量可能會出現(xiàn)復(fù)雜的情況。如果有數(shù)十條或者數(shù)百條數(shù)據(jù),進(jìn)行人為的逐一檢查處理是可行的,可一旦數(shù)據(jù)達(dá)到千萬級別,甚至過億,便不再可能進(jìn)行人為處理了,必須借助外力進(jìn)行處理,如工具或者程序,尤其海量數(shù)據(jù)中復(fù)雜情況的出現(xiàn)率會更高。2)對軟硬件和系統(tǒng)資源需要有高要求及高占用率。處理海量數(shù)據(jù),除了需要方法好,合理的使用工具和分配系統(tǒng)資源也很重要。一般情況,處理的數(shù)據(jù)在TB級以上,則需要使用小型機(jī),不過,在算法優(yōu)異并加大CPU和內(nèi)存的前提下,也可以考慮使用個(gè)人計(jì)算機(jī)。3)要求性能優(yōu)異的算法。有優(yōu)異的算法才能提高對海量數(shù)據(jù)的處理效率。優(yōu)秀的程序代碼對處理數(shù)據(jù)有著至關(guān)重要的作用,特別是在進(jìn)行復(fù)雜數(shù)據(jù)處理時(shí),優(yōu)秀的代碼可以事半功倍。算法優(yōu)異的良好程序代碼,還應(yīng)具有優(yōu)秀的處理流程及異常處理機(jī)制等。本發(fā)明針對上述技術(shù)問題提出ー種分布式存儲海量數(shù)據(jù)的方法。
發(fā)明內(nèi)容
本發(fā)明提供一種海量數(shù)據(jù)的分布式存儲方法,包括下列步驟
步驟1,分割,首先,輸入文件被用戶程序中的MapReduce函數(shù)庫分割成M塊,然后進(jìn)行程序拷貝。步驟2,指派 Map/Reduce 任務(wù)。步驟3,讀取,Master給工作機(jī)分配任務(wù),被分配了 Map任務(wù)的工作機(jī)處理輸入塊的相關(guān)工作。步驟4,本地寫入,這些緩沖到內(nèi)存的中間值將定時(shí)寫入本地硬盤,使用分區(qū)函數(shù)分割成多個(gè)區(qū)域。步驟5,遠(yuǎn)程讀取,當(dāng)Reduce工作機(jī)接收到中間對的位置時(shí),Master調(diào)用遠(yuǎn)程過程從Map工作機(jī)的本地硬盤上讀取緩沖的中間數(shù)據(jù)。步驟6,寫入,依照每ー個(gè)由唯一的中間關(guān)鍵字對應(yīng)的中間數(shù)據(jù)的序列情況,Reduce工作機(jī)發(fā)送該關(guān)鍵字和對應(yīng)的中間數(shù)據(jù)給用戶的Reduce函數(shù),經(jīng)Reduce函數(shù)處理后所得結(jié)果輸出到ー個(gè)最終的輸出文件。步驟7,完成所有的Map/Reduce任務(wù),主控程序激活用戶程序。其中步驟I中每塊文件大概在16M到64MB之間。步驟2中程序由一個(gè)主控程序Master和作為主控程序來分配工作的Worker (エ作機(jī))組成。Master分配這些Map/Reduce任務(wù)到選擇空閑的工作機(jī)上。步驟3中工作機(jī)處理輸入塊的相關(guān)工作指的是數(shù)據(jù)的輸入及處理。其中步驟4中由Maser將接收那些在本地磁盤的數(shù)據(jù)數(shù)列的存放位置信息,由Reduce工作機(jī)負(fù)責(zé)接收這些信息。步驟5中Reduce工作機(jī)讀取這些中間值后,它就按照key是否相同來進(jìn)行排序, 將相同key的值排序在一起。本方法能夠?qū)A繑?shù)據(jù)進(jìn)行處理,具有對軟硬件和系統(tǒng)資源需求低、占用率也低的特點(diǎn)。
圖1為分布式算法流程圖。
具體實(shí)施例方式目前針對海量數(shù)據(jù)的存儲來說,支持分布式處理的分布式軟件系統(tǒng)可以在由通信網(wǎng)絡(luò)互聯(lián)的多處理機(jī)體系結(jié)構(gòu)上執(zhí)行任務(wù)而被廣泛采用。分布式軟件系統(tǒng)由分布式操作系統(tǒng)、分布式程序設(shè)計(jì)語言及其編譯系統(tǒng)、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)等部分組成。分布式系統(tǒng)與并行系統(tǒng)類似,為了方便處理任務(wù),將具有大量復(fù)雜計(jì)算的任務(wù)分割成若干個(gè)相對小計(jì)算量任務(wù)進(jìn)行處理,從而得到最后的計(jì)算結(jié)果。但與并行系統(tǒng)仍然有不同之處,對分布式系統(tǒng)而言,有聯(lián)系的各個(gè)任務(wù)均分開處理,這樣各個(gè)任務(wù)之間幾乎不會相互有影響,比如一個(gè)任務(wù)包為得到處理結(jié)果或者處理結(jié)果發(fā)生錯(cuò)誤,下ー個(gè)任務(wù)包仍然可以正常運(yùn)行。因此,分布式系統(tǒng)對實(shí)時(shí)性的要求較低,并且存在一定量的計(jì)算錯(cuò)誤也是允許的。參見圖1,本發(fā)明提供ー種分布式處理海量數(shù)據(jù)存儲的算法,包括以下步驟
步驟I,分割,首先,輸入文件被用戶程序中的MapReduce函數(shù)庫分割成M塊,姆塊大概
在16M到64MB之間,然后進(jìn)行程序拷貝。步驟2,指派Map/Reduce任務(wù),程序由一個(gè)主控程序Master和作為主控程序來分配工作的Worker (工作機(jī))組成。Master分配這些Map/Reduce任務(wù)到選擇空閑的工作機(jī)上。步驟3,讀取,Master給工作機(jī)分配任務(wù),被分配了 Map任務(wù)的工作機(jī)處理輸入塊的相關(guān)工作(數(shù)據(jù)的輸入及處理),而且〈key, value)對被傳遞給用戶指定的Map函數(shù),而由此函數(shù)產(chǎn)生的中間值對暫時(shí)存放到內(nèi)存中。步驟4,本地寫入,這些緩沖到內(nèi)存的中間值將定時(shí)寫入本地硬盤,使用分區(qū)函數(shù)分割成多個(gè)區(qū)域。Maser將接收那些在本地磁盤的數(shù)據(jù)數(shù)列的存放位置信息,由Reduceエ作機(jī)負(fù)責(zé)接收這些信息。步驟5,遠(yuǎn)程讀取,當(dāng)Reduce工作機(jī)接收到中間對的位置時(shí),Master調(diào)用遠(yuǎn)程過程從Map工作機(jī)的本地硬盤上讀取緩沖的中間數(shù)據(jù)。Reduce工作機(jī)讀取這些中間值后,它就按照key是否相同來進(jìn)行排序,將相同key的值排序在一起。使用外排序來緩解中間值過于復(fù)雜龐大的情況。步驟6,寫入,依照每ー個(gè)由唯一的中間關(guān)鍵字對應(yīng)的中間數(shù)據(jù)的序列情況,Reduce工作機(jī)發(fā)送該關(guān)鍵字和對應(yīng)的中間數(shù)據(jù)給用戶的Reduce函數(shù),經(jīng)Reduce函數(shù)處理后所得結(jié)果輸出到ー個(gè)最終的輸出文件。步驟7,完成所有的Map/Reduce任務(wù),主控程序激活用戶程序。為了在成百上千臺機(jī)器上使用上述分布式處理海量數(shù)據(jù)存儲的算法,如果Master失效,在主控程序中會定期設(shè)置checkpoint,并導(dǎo)出數(shù)據(jù)。這樣,當(dāng)某個(gè)任務(wù)失效的時(shí)候,便可以選擇從最近的ー個(gè)checkpoint開始恢復(fù)數(shù)據(jù)并重新執(zhí)行該任務(wù)。不過,由于Master的P隹一>!■生,當(dāng)Master失效后,只能終止運(yùn)行整個(gè)MapReduce程序,并重新執(zhí)行。如果work失效,Master會通過定期ping各個(gè)工作機(jī)來檢測它們的工作狀態(tài)。如果工作機(jī)失效,則 工作機(jī)會沒有回答,這時(shí)便結(jié)束對該工作機(jī)的任務(wù)調(diào)度,并將正在該工作機(jī)上處理的Map/Reduce任務(wù)設(shè)置重新設(shè)置為空閑狀態(tài),以便供Master重新調(diào)度。以上通過圖示和說明提出了本發(fā)明的描述,上述舉例,并非窮舉,本領(lǐng)域的普通技術(shù)人員可以在本發(fā)明的精神和范圍內(nèi)作出改進(jìn)和變形。
權(quán)利要求
1.一種海量數(shù)據(jù)的分布式存儲方法,包括下列步驟 步驟1,分割,首先,輸入文件被用戶程序中的MapReduce函數(shù)庫分割成M塊,然后進(jìn)行程序拷貝; 步驟2,指派Map/Reduce任務(wù); 步驟3,讀取,Master給工作機(jī)分配任務(wù),被分配了 Map任務(wù)的工作機(jī)處理輸入塊的相關(guān)工作; 步驟4,本地寫入,這些緩沖到內(nèi)存的中間值將定時(shí)寫入本地硬盤,使用分區(qū)函數(shù)分割成多個(gè)區(qū)域; 步驟5,遠(yuǎn)程讀取,當(dāng)Reduce工作機(jī)接收到中間對的位置時(shí),Master調(diào)用遠(yuǎn)程過程從Map工作機(jī)的本地硬盤上讀取緩沖的中間數(shù)據(jù); 步驟6,寫入,依照每一個(gè)由唯一的中間關(guān)鍵字對應(yīng)的中間數(shù)據(jù)的序列情況,Reduce工作機(jī)發(fā)送該關(guān)鍵字和對應(yīng)的中間數(shù)據(jù)給用戶的Reduce函數(shù),經(jīng)Reduce函數(shù)處理后所得結(jié)果輸出到一個(gè)最終的輸出文件; 步驟7,完成所有的Map/Reduce任務(wù),主控程序激活用戶程序。
2.如權(quán)利要求1所述的海量數(shù)據(jù)的分布式存儲方法,其中步驟I中每塊文件大概在16M到64MB之間。
3.如權(quán)利要求1所述的海量數(shù)據(jù)的分布式存儲方法,步驟2中程序由一個(gè)主控程序Master和作為主控程序來分配工作的Worker (工作機(jī))組成,Master分配這些Map/Reduce任務(wù)到選擇空閑的工作機(jī)上。
4.如權(quán)利要求1所述的海量數(shù)據(jù)的分布式存儲方法,步驟3中工作機(jī)處理輸入塊的相關(guān)工作指的是數(shù)據(jù)的輸入及處理。
5.如權(quán)利要求1所述的海量數(shù)據(jù)的分布式存儲方法,其中步驟4中由Maser將接收那些在本地磁盤的數(shù)據(jù)數(shù)列的存放位置信息,由Reduce工作機(jī)負(fù)責(zé)接收這些信息。
6.如權(quán)利要求1所述的海量數(shù)據(jù)的分布式存儲方法,步驟5中Reduce工作機(jī)讀取這些中間值后,它就按照key是否相同來進(jìn)行排序,將相同key的值排序在一起。
全文摘要
本發(fā)明提供一種海量數(shù)據(jù)的分布式存儲方法,包括分割、指派Map/Reduce任務(wù)、讀取、本地寫入、遠(yuǎn)程讀取、寫入、完成所有的Map/Reduce任務(wù),主控程序激活用戶程序等步驟。本方法能夠?qū)A繑?shù)據(jù)進(jìn)行處理,具有對軟硬件和系統(tǒng)資源需求低、占用率也低的特點(diǎn)。
文檔編號H04L29/08GK103023992SQ20121049393
公開日2013年4月3日 申請日期2012年11月28日 優(yōu)先權(quán)日2012年11月28日
發(fā)明者宗競 申請人:江蘇樂買到網(wǎng)絡(luò)科技有限公司