一種海量數(shù)據(jù)的分布式存儲方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲技術(shù)領(lǐng)域,特別涉及一種海量數(shù)據(jù)的分布式存儲方法。
【背景技術(shù)】
[0002]當(dāng)前,隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,網(wǎng)絡(luò)中的數(shù)據(jù)資源不斷地膨脹。數(shù)據(jù)庫服務(wù)器一方面需要解決存儲空間和訪問速度等問題,另一方面也需要考慮對海量數(shù)據(jù)的挖掘處理,以實現(xiàn)對海量數(shù)據(jù)進行合理高效地存儲。
[0003]然而,在現(xiàn)有技術(shù)中,海量數(shù)據(jù)的存儲過程通常是粗放式存儲,也即,在未加處理的情況下,按照接收到的數(shù)據(jù)文件的時間順序依次對數(shù)據(jù)文件進行存儲,這樣顯然會導(dǎo)致不同類型的數(shù)據(jù)混亂地擠在一起,從而使得后續(xù)對存儲文件的訪問過程造成嚴(yán)重不便。
[0004]綜上所述可以看出,如何在數(shù)據(jù)存儲之前預(yù)先對數(shù)據(jù)進行挖掘處理,以實現(xiàn)對數(shù)據(jù)合理高效的存儲是目前亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的目的在于提供一種海量數(shù)據(jù)的分布式存儲方法,通過在數(shù)據(jù)存儲之前預(yù)先對數(shù)據(jù)進行挖掘處理,從而實現(xiàn)了對數(shù)據(jù)合理高效的存儲。其具體方案如下:
[0006]—種海量數(shù)據(jù)的分布式存儲方法,包括:
[0007]當(dāng)獲取到輸入文件時,對所述輸入文件進行分割處理,相應(yīng)地得到N份塊文件,N為正整數(shù);
[0008]分別對所述N份塊文件中的每一份塊文件進行特征信息提取處理,相應(yīng)地得到每一份塊文件的特征信息;
[0009]對所述N份塊文件中具有相同特征信息的塊文件歸為一類,相應(yīng)地得到M類文件,其中,M為不大于N的正整數(shù);
[0010]分別對所述M類文件中的每一類文件進行文件合并,相應(yīng)地得到M份合并文件,并對所述M份合并文件進行存儲。
[0011]優(yōu)選的,任一份塊文件的文件大小為16MB至64MB中的任一數(shù)值。
[0012]優(yōu)選的,所述對所述輸入文件進行分割處理,相應(yīng)地得到N份塊文件的過程,包括:
[0013]利用MapReduce函數(shù)庫,對所述輸入文件進行分割,得到所述N份塊文件。
[0014]優(yōu)選的,所述分別對所述N份塊文件中的每一份塊文件進行特征信息提取處理,相應(yīng)地得到每一份塊文件的特征信息的過程,包括:
[0015]為所述N份塊文件中的每一份塊文件分配各自的Map任務(wù),相應(yīng)地得到N個Map任務(wù);
[0016]利用所述N個Map任務(wù)中的每一個Map任務(wù),從相應(yīng)的塊文件中提取出鍵值對,相應(yīng)地得到N個鍵值對;其中,任一份塊文件對應(yīng)的鍵值對均包含該塊文件的關(guān)鍵字以及相應(yīng)的數(shù)值;
[0017]將每一份塊文件對應(yīng)的鍵值對中的關(guān)鍵字確定為該塊文件的特征信息。
[0018]優(yōu)選的,所述對所述N份塊文件中具有相同特征信息的塊文件歸為一類,相應(yīng)地得到M類文件的過程,包括:
[0019]將所述N個Map任務(wù)分配給Map工作機,以利用所述Map工作機對所述N個Map任務(wù)進行處理,得到相應(yīng)的N個中間值;
[0020]將所述N個中間值不重復(fù)地寫入所述Map工作機的本地硬盤上的P個分區(qū),P為正整數(shù),并相應(yīng)地記錄每一個中間值所對應(yīng)的存放位置信息;
[0021]根據(jù)每一個中間值所對應(yīng)的存放位置信息,對所述P個分區(qū)上存儲的中間值進行遠程讀取操作,并將讀取到的中間值發(fā)送至Reduce工作機,以利用所述Reduce工作機將具有相同關(guān)鍵字的塊文件所對應(yīng)的中間值排序在一起,相應(yīng)地得到M個排序后的文件,并將所述M個排序后的文件確定為所述M類文件。
[0022]優(yōu)選的,所述Map工作機對任一個Map任務(wù)進行處理的過程,包括:
[0023]對與該Map任務(wù)對應(yīng)的塊文件進行數(shù)據(jù)輸入處理,并將相應(yīng)的鍵值對傳遞給預(yù)設(shè)的Map函數(shù),以通過該Map函數(shù)獲取相應(yīng)的中間值,并將該中間值緩存至內(nèi)存中。
[0024]優(yōu)選的,所述分別對所述M類文件中的每一類文件進行文件合并,相應(yīng)地得到M份合并文件的過程,包括:
[0025]通過所述Reduce工作機,將所述M類文件中的每一類文件以及該類文件所對應(yīng)的關(guān)鍵字發(fā)送至相應(yīng)的Reduce函數(shù),以利用Reduce函數(shù)對每一類文件進行文件合并處理,相應(yīng)地得到所述M份合并文件。
[0026]優(yōu)選的,在為所述N份塊文件中的每一份塊文件分配各自的Map任務(wù),相應(yīng)地得到所述N個Map任務(wù)之后,還包括:
[0027]對所述N個Map任務(wù)的有效性進行實時監(jiān)測,當(dāng)監(jiān)測到任一 Map任務(wù)失效后,重新執(zhí)行該Map任務(wù)。
[0028]優(yōu)選的,所述分布式存儲方法,還包括:
[0029]對所述Map工作機的工作狀態(tài)進行實時監(jiān)測,得到相應(yīng)的監(jiān)測結(jié)果;并對所述監(jiān)測結(jié)果進行實時顯示。
[0030]優(yōu)選的,所述分布式存儲方法,還包括:
[0031]當(dāng)監(jiān)測到所述Map工作機失效時,將所述Map工作機當(dāng)前正在處理的Map任務(wù)置為失效狀態(tài),并結(jié)束所述Map工作機的運作。
[0032]本發(fā)明中,當(dāng)獲取到輸入文件時,對輸入文件進行分割處理,相應(yīng)地得到N份塊文件;分別對上述N份塊文件中的每一份塊文件進行特征信息提取處理,相應(yīng)地得到每一份塊文件的特征信息;對上述N份塊文件中具有相同特征信息的塊文件歸為一類,相應(yīng)地得到M類文件;分別對上述M類文件中的每一類文件進行文件合并,相應(yīng)地得到M份合并文件,并對上述M份合并文件進行存儲。可見,本發(fā)明中,當(dāng)接收到輸入文件后,先對輸入文件進行分割,并將分割后得到的多個塊文件的特征信息提取出來,然后將具有相同特征信息的塊文件歸為一類,進而將每一類文件進行合并存儲,由此實現(xiàn)了對多個塊文件的特征信息的挖掘,進而實現(xiàn)了對數(shù)據(jù)合理高效的存儲。
【附圖說明】
[0033]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
[0034]圖1為本發(fā)明實施例公開的一種海量數(shù)據(jù)的分布式存儲方法流程圖;
[0035]圖2為本發(fā)明實施例公開的一種具體的海量數(shù)據(jù)的分布式存儲方法流程圖。
【具體實施方式】
[0036]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0037]本發(fā)明實施例公開了一種海量數(shù)據(jù)的分布式存儲方法,參見圖1所示,上述分布式存儲方法包括:
[0038]步驟Sll:當(dāng)獲取到輸入文件時,對輸入文件進行分割處理,相應(yīng)地得到N份塊文件,N為正整數(shù);
[0039]步驟S12:分別對上述N份塊文件中的每一份塊文件進行特征信息提取處理,相應(yīng)地得到每一份塊文件的特征信息;
[0040]步驟S13:對上述N份塊文件中具有相同特征信息的塊文件歸為一類,相應(yīng)地得到M類文件,其中,M為不大于N的正整數(shù);
[0041]步驟S14:分別對上述M類文件中的每一類文件進行文件合并,相應(yīng)地得到M份合并文件,并對上述M份合并文件進行存儲。
[0042]其中,優(yōu)選的,上述任一份塊文件的文件大小為16MB至64MB中的任一數(shù)值。
[0043]本發(fā)明實施例中,當(dāng)獲取到輸入文件時,對輸入文件進行分割處理,相應(yīng)地得到N份塊文件;分別對上述N份塊文件中的每一份塊文件進行特征信息提取處理,相應(yīng)地得到每一份塊文件的特征信息;對上述N份塊文件中具有相同特征信息的塊文件歸為一類,相應(yīng)地得到M類文件;分別對上述M類文件中的每一類文件進行文件合并,相應(yīng)地得到M份合并文件,并對上述M份合并文件進行存儲。
[0044]可見,本發(fā)明實施例中,當(dāng)接收到輸入文件后,先對輸入文件進行分割,并將分割后得到的多個塊文件的特征信息提取出來,然后將具有相同特征信息的塊文件歸為一類,進而將每一類文件進行合并存儲,由此實現(xiàn)了對多個塊文件的特征信息的挖掘,進而實現(xiàn)了對數(shù)據(jù)合理高效的存儲。
[0045]本發(fā)明實施例公開了一種具體的海量數(shù)據(jù)的分布式存儲方法,相對于上一實施例,本實施例對技術(shù)方案作了進一步的說明和優(yōu)化。具體的:
[0046]參見圖2所示,上一實施例步驟Sll中,對輸入文件進行分割處理,相應(yīng)地得到N份塊文件的過程,具體包括:利用MapReduce函數(shù)庫,對輸入文件進行分割,得到N份塊文件。
[0047]參見圖2所示,上一實施例步驟S12中,分別對上述N份塊文件中的每一份塊文件進行特征信息提取處理,相應(yīng)地得到每一份塊文件的特征信息的過程,包括:
[0048]步驟S121:為