基于Hadoop的數(shù)據(jù)傳輸方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于Hadoop的數(shù)據(jù)傳輸方法及系統(tǒng),該方法包括:中間結(jié)果文件產(chǎn)生步驟,建立一個中間結(jié)果文件以隨時存儲所有Map任務(wù)所產(chǎn)生的中間結(jié)果;索引建立步驟,建立索引文件,根據(jù)該中間結(jié)果文件隨時更新該索引文件;傳送步驟,當(dāng)根據(jù)該索引文件判斷出該中間結(jié)果文件中存在未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動時,主動向該Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果。本發(fā)明縮短了Hadoop任務(wù)的執(zhí)行時間,使得Map任務(wù)與Reduce任務(wù)的并行程度更高。提高了系統(tǒng)資源利用率,降低了系統(tǒng)的存儲開銷。
【專利說明】
基于Hadoop的數(shù)據(jù)傳輸方法及系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及大數(shù)據(jù)處理系統(tǒng)領(lǐng)域,尤其涉及一種基于Hadoop的數(shù)據(jù)傳輸方法及系統(tǒng)。
【背景技術(shù)】
[0002]為了更清楚的理解本發(fā)明,首先對幾個名詞進行以下解釋:
[0003]Hadoop系統(tǒng):由Apache基金會開發(fā)的一個分布式系統(tǒng)基礎(chǔ)架構(gòu),用戶可以在不了解分布式底層細節(jié)的情況下,開發(fā)分布式程序。Hadoop實現(xiàn)了一個分布式文件系統(tǒng)(HadoopDistributed File System),簡稱HDFS0
[0004]MapReduce計算框架:基于Hadoop分布式文件系統(tǒng)的并行處理大數(shù)據(jù)集的軟件框架,與HDFS構(gòu)成Hadoop的兩大核心組件。MapReduce計算框架需要運行由用戶實現(xiàn)的Map任務(wù)和Reduce任務(wù)。
[0005]圖1是Hadoop系統(tǒng)數(shù)據(jù)處理流程示意圖。每個Map任務(wù)都會生成一個中間結(jié)果文件,每個中間結(jié)果文件包含多個區(qū)域,區(qū)域的個數(shù)等于Reduce任務(wù)的個數(shù)。當(dāng)Map任務(wù)執(zhí)行完后,Reduce任務(wù)會發(fā)送請求獲取Map任務(wù)產(chǎn)生的中間結(jié)果,在歸并排序后執(zhí)行Reduce任務(wù)的計算處理邏輯,最終將結(jié)果寫入HDFS中。
[0006]雖然這種設(shè)計方法在Hadoop系統(tǒng)中一直沿用至今,但依然存在著不足之處。
[0007]在上述方法中,需由Reduce任務(wù)向Map任務(wù)請求中間結(jié)果。更進一步的,Reduce任務(wù)需要被動等待,直到Map任務(wù)執(zhí)行完成后才能申請獲取中間結(jié)果。則在Map任務(wù)執(zhí)行過程中,即使已經(jīng)產(chǎn)生了一部分中間結(jié)果,也不能立即發(fā)送至Reduce任務(wù)進行處理,只能等待,由此降低了系統(tǒng)運行效率。同時,網(wǎng)絡(luò)資源會因為Map任務(wù)沒有完成而產(chǎn)生空閑,Reduce任務(wù)也會因為Map任務(wù)沒有完成,沒有輸入數(shù)據(jù)而不能進行后續(xù)計算??梢姡鲜龇绞绞沟迷撓到y(tǒng)的多個部分存在必須等待的空檔。
[0008]圖2是Hadoop系統(tǒng)中Map任務(wù)的中間結(jié)果存儲方式示意圖,每個Map任務(wù)分別具有對應(yīng)的環(huán)形緩沖區(qū)。每個Map任務(wù)(Mapl、Map2、Map3)先將產(chǎn)生的中間結(jié)果〈關(guān)鍵字,值,區(qū)域>存儲在對應(yīng)的環(huán)形緩沖區(qū)中,當(dāng)環(huán)形緩沖區(qū)容量達到閾值后需要將環(huán)形緩沖區(qū)中的數(shù)據(jù)按照區(qū)域進行排序,區(qū)域內(nèi)的數(shù)據(jù)按照關(guān)鍵字進行排序,并將排序后的結(jié)果存入一臨時溢出文件中。當(dāng)該Map任務(wù)執(zhí)行完畢后,需要將對應(yīng)該Map任務(wù)的所有的溢出文件進行歸并排序,合并成一個中間結(jié)果文件。可見,每個Map任務(wù)均各自產(chǎn)生一個中間結(jié)果文件。
[0009]這種存儲中間結(jié)果的方式,使得每臺服務(wù)器產(chǎn)生大量的中間結(jié)果文件。若集群規(guī)模為1000個節(jié)點,需要處理10T的數(shù)據(jù),就會產(chǎn)生100萬個Map任務(wù),平均每個節(jié)點就需要運行1000個Map任務(wù),因此每個節(jié)點有可能需要同時打開1000個中間結(jié)果文件進行數(shù)據(jù)的傳輸,使得系統(tǒng)存儲開銷較高。
[0010]專利文獻1(公開號為CN102209087A)公開了一種在具有存儲網(wǎng)絡(luò)(SAN)的數(shù)據(jù)中心進行MapReduce數(shù)據(jù)傳輸?shù)姆椒?,該?shù)據(jù)中心包括部署有作業(yè)服務(wù)器、Map任務(wù)服務(wù)器和Reduce任務(wù)服務(wù)器的多臺服務(wù)器,該方法包括:響應(yīng)于接收到作業(yè)服務(wù)器分配的Map任務(wù),Map任務(wù)服務(wù)器執(zhí)行Map任務(wù)并產(chǎn)生Map任務(wù)輸出結(jié)果;Map任務(wù)服務(wù)器將Map任務(wù)輸出結(jié)果寫入存儲網(wǎng)絡(luò);以及響應(yīng)于接收到作業(yè)服務(wù)器分配的Reduce任務(wù),Reduce任務(wù)服務(wù)器從存儲網(wǎng)絡(luò)讀取Map任務(wù)輸出結(jié)果。但是該專利專注于利用存儲網(wǎng)絡(luò)的網(wǎng)絡(luò)帶寬優(yōu)勢,加速中間結(jié)果的傳輸效率,但依然使用傳統(tǒng)的由Reduce任務(wù)請求中間結(jié)果的方式,存在如上所述的問題。
【發(fā)明內(nèi)容】
[0011]本發(fā)明解決的技術(shù)問題在于,提供一種基于Hadoop的數(shù)據(jù)傳輸方法及系統(tǒng),使得在Map任務(wù)的執(zhí)行過程中就可以傳輸中間結(jié)果,提高Map任務(wù)與Reduce任務(wù)的并行程度。
[0012]更進一步的,本發(fā)明可以提高系統(tǒng)資源利用率,使得Reduce任務(wù)可以盡快執(zhí)行后續(xù)計算邏輯,使得計算資源和網(wǎng)絡(luò)資源得到了充分的利用。
[0013]更進一步的,本發(fā)明在每臺服務(wù)器上只生成一個中間結(jié)果文件,減少了在傳輸中間結(jié)果時,打開的文件個數(shù),降低系統(tǒng)存儲開銷。
[0014]為了解決上述問題,本發(fā)明公開了一種基于Hadoop的數(shù)據(jù)傳輸方法,該方法包括:
[0015]中間結(jié)果文件產(chǎn)生步驟,建立一個中間結(jié)果文件以隨時存儲所有Map任務(wù)所產(chǎn)生的中間結(jié)果;
[0016]索引建立步驟,建立索引文件,根據(jù)該中間結(jié)果文件隨時更新該索引文件;
[0017]傳送步驟,當(dāng)根據(jù)該索引文件判斷出該中間結(jié)果文件中存在未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動時,主動向該Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果。
[0018]該索引文件針對每個該中間結(jié)果設(shè)置一條索引,該索引記載有對應(yīng)的Reduce任務(wù)信息、傳輸標(biāo)志位以及中間結(jié)果在該中間結(jié)果文件中的偏移位置。
[0019]該傳送步驟進一步包括:當(dāng)所述Reduce任務(wù)成功接收到該中間結(jié)果之后,對該中間結(jié)果所對應(yīng)的索引中的傳輸標(biāo)志位更新為已傳輸。
[0020]該中間結(jié)果文件產(chǎn)生步驟進一步包括:
[0021 ]步驟10,每個該Map任務(wù)將所產(chǎn)生的中間結(jié)果存儲在緩沖區(qū)中;
[0022]步驟20,當(dāng)該緩沖區(qū)的使用量達到緩沖區(qū)閾值后,將該緩沖區(qū)中存儲的所有中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到臨時溢出文件中;
[0023]步驟30,當(dāng)臨時溢出文件個數(shù)達到溢出文件閾值后,對所有臨時溢出文件中的中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到該中間結(jié)果文件中。
[0024]該中間結(jié)果包括:關(guān)鍵字、值以及區(qū)域,該步驟20以及該步驟30中的歸并排序均為:按照區(qū)域進行排序,區(qū)域內(nèi)按照關(guān)鍵字進行排序。
[0025]本發(fā)明還公開了一種基于Hadoop的數(shù)據(jù)傳輸系統(tǒng),該系統(tǒng)包括:
[0026]中間結(jié)果文件產(chǎn)生單元,用于建立一個中間結(jié)果文件以隨時存儲所有Map任務(wù)所產(chǎn)生的中間結(jié)果;
[0027]索引建立單元,用于建立索引文件,根據(jù)該中間結(jié)果文件隨時更新該索引文件;
[0028]傳送單元,用于當(dāng)根據(jù)該索引文件判斷出該中間結(jié)果文件中存在未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動時,主動向該Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果。
[0029]該索引文件針對每個該中間結(jié)果設(shè)置一條索引,該索引記載有對應(yīng)的Reduce任務(wù)信息、傳輸標(biāo)志位以及中間結(jié)果在該中間結(jié)果文件中的偏移位置。[°03°]該傳送單元進一步包括一更新單元,用于當(dāng)所述Reduce任務(wù)成功接收到該中間結(jié)果之后,對該中間結(jié)果所對應(yīng)的索引中的傳輸標(biāo)志位更新為已傳輸。
[0031]該中間結(jié)果文件產(chǎn)生單元進一步包括:
[0032]第一存儲單元,用于將每個該Map任務(wù)將所產(chǎn)生的中間結(jié)果存儲在緩沖區(qū)中;
[0033]第二存儲單元,用于當(dāng)該緩沖區(qū)的使用量達到緩沖區(qū)閾值后,將該緩沖區(qū)中存儲的所有中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到臨時溢出文件中;
[0034]第三存儲單元,用于當(dāng)臨時溢出文件個數(shù)達到溢出文件閾值后,對所有臨時溢出文件中的中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到該中間結(jié)果文件中。
[0035]該中間結(jié)果包括:關(guān)鍵字、值以及區(qū)域,該第二存儲單元以及該第三存儲單元中的歸并排序均為:按照區(qū)域進行排序,區(qū)域內(nèi)按照關(guān)鍵字進行排序。
[0036]本發(fā)明還公開了一種分布式文件系統(tǒng),包括所述的基于Hadoop的數(shù)據(jù)傳輸系統(tǒng)。
[0037]本發(fā)明的有益效果在于:
[0038]1.通過提高子任務(wù)間并發(fā),縮短Hadoop任務(wù)的執(zhí)行時間:守護進程在Map任務(wù)執(zhí)行過程中傳輸中間結(jié)果,使得Map任務(wù)與Reduce任務(wù)的并行程度更高。
[0039]2.提高系統(tǒng)資源利用率:在Map任務(wù)執(zhí)行過程中就可以進行中間結(jié)果的傳輸,Reduce任務(wù)也可以盡快的執(zhí)行后續(xù)的計算邏輯,使得計算資源和網(wǎng)絡(luò)資源得到了充分的利用。
[0040]3.降低系統(tǒng)存儲開銷:在每臺服務(wù)器上只生成一個中間結(jié)果文件,減少了在傳輸中間結(jié)果時,打開的文件個數(shù)。
[0041]4、通過本發(fā)明所述的中間結(jié)果的多級緩存且多次歸并排序的存儲方式,使得最終存入中間結(jié)果文件中的數(shù)據(jù)實現(xiàn)了有序化,在此基礎(chǔ)上,可在收集需要發(fā)送給同一 Reduce任務(wù)的預(yù)定條中間結(jié)果后,統(tǒng)一對該預(yù)定條中間結(jié)果進行發(fā)送,以提高傳輸效率。
【附圖說明】
[0042]圖1所示為Hadoop系統(tǒng)數(shù)據(jù)處理流程示意圖;
[0043]圖2所示為Hadoop系統(tǒng)中Map任務(wù)的中間結(jié)果存儲方式示意圖;
[0044]圖3所示為本發(fā)明的一種基于Hadoop的數(shù)據(jù)傳輸方法的流程圖;
[0045]圖4A所示為本發(fā)明的Map任務(wù)存儲中間結(jié)果的方法的流程圖;
[0046]圖4B所示為本發(fā)明的索引文件的結(jié)構(gòu)示意圖;
[0047]圖5所示為本發(fā)明的基于Hadoop的數(shù)據(jù)傳輸方法的具體流程圖;
[0048]圖6所示為本發(fā)明的Reduce任務(wù)接收中間結(jié)果的流程圖。
【具體實施方式】
[0049]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本發(fā)明的基于Hadoop的數(shù)據(jù)傳輸方法及系統(tǒng)進行說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[°°50] 為了減少Reduce任務(wù)的等待時間,提高Map任務(wù)與Reduce任務(wù)的并行程度,同時降低系統(tǒng)存儲開銷,本發(fā)明對【背景技術(shù)】中每個Map任務(wù)均生成一個中間結(jié)果文件的方式進行了改進,修改為同一服務(wù)器中運行的所有Map任務(wù)均使用同一中間結(jié)果文件進行中間結(jié)果的存儲,配合索引文件的使用,使得在Map任務(wù)的執(zhí)行過程中就可以傳輸中間結(jié)果,隨著中間結(jié)果的不斷產(chǎn)生而主動推送給Reduce任務(wù),從而提高Map任務(wù)與Reduce任務(wù)的并行程度,提高系統(tǒng)資源利用率。
[0051 ]如圖3所示為本發(fā)明的一種基于Hadoop的數(shù)據(jù)傳輸方法的流程圖,包括如下步驟:
[0052]中間結(jié)果文件產(chǎn)生步驟,建立一個中間結(jié)果文件以隨時存儲所有Map任務(wù)所產(chǎn)生的中間結(jié)果;
[0053]索引建立步驟,建立索引文件,根據(jù)該中間結(jié)果文件隨時更新該索引文件;
[0054]傳送步驟,當(dāng)根據(jù)該索引文件判斷出該中間結(jié)果文件中存在未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動時,主動向該Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果。
[0055]具體來說,本發(fā)明通過同一中間結(jié)果文件存儲服務(wù)器中的所有Map任務(wù)所產(chǎn)生的中間結(jié)果。隨著Map任務(wù)的不斷執(zhí)行,所產(chǎn)生的中間結(jié)果可以依照所產(chǎn)生的時間順序依次存儲進中間結(jié)果文件中。
[0056]在另一優(yōu)化實施例中,還可以按照如下方式進行中間結(jié)果的存儲。如圖4A所示為本發(fā)明的Map任務(wù)存儲中間結(jié)果的方法,包括下列步驟:
[0057]步驟410,將中間結(jié)果存儲到緩沖區(qū):Map任務(wù)將產(chǎn)生的中間結(jié)果〈關(guān)鍵字,值,區(qū)域>存儲在緩沖區(qū)中。
[0058]步驟420,將中間結(jié)果存儲到溢出文件:當(dāng)緩沖區(qū)的使用量達到緩沖區(qū)閾值后,將該緩沖區(qū)中的所有中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲在臨時溢出文件中,該歸并排序首先按照中間結(jié)果中的“區(qū)域”這一字段進行排序,在同一區(qū)域內(nèi)的中間結(jié)果按照“關(guān)鍵字”這一字段進行排序。
[0059]步驟430,將中間結(jié)果存儲到中間結(jié)果文件:當(dāng)臨時溢出文件個數(shù)達到臨時溢出文件閾值后,對所有的臨時溢出文件中的中間結(jié)果進行歸并排序,將排序后的中間結(jié)果添加到中間結(jié)果文件中。該歸并排序依然是首先按照中間結(jié)果中的“區(qū)域”這一字段進行排序,在同一區(qū)域內(nèi)的中間結(jié)果按照“關(guān)鍵字”這一字段進行排序。
[0060]由此可見,隨著Map任務(wù)的不斷執(zhí)行,源源不斷的產(chǎn)生中間結(jié)果,而這些中間結(jié)果通過上述的多級緩存且多次歸并排序的方式,源源不斷的存儲進入中間結(jié)果文件。
[0061 ]本發(fā)明還建立有一索引文件,該索引文件用于為該中間結(jié)果文件中的每條中間結(jié)果建立索引。因此,每當(dāng)中間結(jié)果文件中新增一條中間結(jié)果,則在該索引文件中為該新增中間結(jié)果對應(yīng)增加一條索引。
[0062]如圖4B所示為該索引文件的結(jié)構(gòu)示意圖。
[0063]每條索引記載有:對應(yīng)的Reduce任務(wù)信息、傳輸標(biāo)志位、中間結(jié)果在該中間結(jié)果文件中的偏移位置。
[0064]具體來說,由于中間結(jié)果文件包含多個區(qū)域,每個區(qū)域?qū)?yīng)一個Reduce任務(wù),故而通過中間結(jié)果中所記載的“區(qū)域”這一字段,就可以確定對應(yīng)的Reduce任務(wù)信息。如圖4B中所示,Reduce進程標(biāo)號即所述的對應(yīng)的Reduce任務(wù)信息。
[0065]傳輸標(biāo)志位用于標(biāo)記該條索引所對應(yīng)的中間結(jié)果是否已經(jīng)傳輸至Reduce任務(wù)。則在每條中間結(jié)果進入中間結(jié)果文件,并相應(yīng)的產(chǎn)生一條索引時,其傳輸標(biāo)志位均設(shè)置為“未傳輸”。在本實施例中,可通過“O”表示“未傳輸”,“I”表示“已傳輸”。
[0066]中間結(jié)果在該中間結(jié)果文件中的偏移位置代表著該中間結(jié)果在該中間結(jié)果文件中的實際存儲位置。則通過該偏移位置可以在中間結(jié)果文件中定位到該條中間結(jié)果。
[0067]如圖5所示為本發(fā)明的基于Hadoop的數(shù)據(jù)傳輸方法的具體流程圖。本發(fā)明在Hadoop中安裝一守護進程,通過該守護進程執(zhí)行圖5所述方法。
[0068]步驟11,執(zhí)行Map任務(wù),產(chǎn)生中間結(jié)果文件和所述中間結(jié)果文件的索引文件,該索弓I文件的結(jié)構(gòu)如圖4B所示;
[0069]步驟12,守護進程遍歷該索引文件,查看所有中間結(jié)果的傳輸標(biāo)志位;
[0070]步驟13,當(dāng)服務(wù)器中所有Map任務(wù)執(zhí)行完畢,且所有中間結(jié)果均為已傳輸,跳轉(zhuǎn)至步驟18;否則,執(zhí)行步驟14;
[0071]步驟14,若守護進程發(fā)現(xiàn)存在尚未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動,則執(zhí)行步驟15;否則,跳轉(zhuǎn)至步驟12;
[0072]步驟15,守護進程主動向Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果;
[0073]守護進行將根據(jù)索引文件的指引,在中間結(jié)果文件中找到傳輸標(biāo)志位為O的中間結(jié)果,并將其傳送到與Reduce進程編號對應(yīng)的Reduce任務(wù);
[0074]步驟16,若守護進程收到應(yīng)答消息,則執(zhí)行步驟17;否則,跳轉(zhuǎn)至步驟12;
[0075]步驟17,守護進程將索引文件中于步驟15中傳輸?shù)闹虚g結(jié)果的傳輸標(biāo)志位改為已傳輸,跳轉(zhuǎn)至步驟12;
[0076]守護進程收到來自Reduce任務(wù)的應(yīng)答消息后,將索引文件中該中間結(jié)果的傳輸標(biāo)志位標(biāo)記為I ;
[0077]步驟18,守護進程退出。
[0078]相對應(yīng)的,所述的Reduce任務(wù)接收中間結(jié)果的過程為,所述Reduce任務(wù)接收所述守護進程發(fā)送的中間結(jié)果,并向所述守護進程發(fā)送成功接收的消息,所述Reduce任務(wù)成功接收了所有所述中間結(jié)果后,再進行后續(xù)計算。具體如圖6所示,包括下列步驟:
[0079]步驟21,Reduce任務(wù)收集中間結(jié)果;
[0080]步驟22,若Reduce任務(wù)成功接收中間結(jié)果,則跳轉(zhuǎn)至步驟24;否則,執(zhí)行步驟23;[0081 ] 步驟23 ,Reduce任務(wù)不做應(yīng)答;
[0082]步驟24,Reduce任務(wù)向發(fā)送中間結(jié)果的守護進程返回成功接收消息;
[0083]步驟25,若Reduce任務(wù)成功接收了所有中間結(jié)果,則執(zhí)行步驟26;否則,跳轉(zhuǎn)至步驟 21.’
[0084]步驟26 ,Reduce任務(wù)進行后續(xù)計算。
[0085]基于以上內(nèi)容可見,本發(fā)明的有益效果在于:
[0086]1.通過提高子任務(wù)間并發(fā),縮短Hadoop任務(wù)的執(zhí)行時間:守護進程在Map任務(wù)執(zhí)行過程中傳輸中間結(jié)果,使得Map任務(wù)與Reduce任務(wù)的并行程度更高。
[0087]2.提高系統(tǒng)資源利用率:在Map任務(wù)執(zhí)行過程中就可以進行中間結(jié)果的傳輸,Reduce任務(wù)也可以盡快的執(zhí)行后續(xù)的計算邏輯,使得計算資源和網(wǎng)絡(luò)資源得到了充分的利用。
[0088]3.降低系統(tǒng)存儲開銷:在每臺服務(wù)器上只生成一個中間結(jié)果文件,減少了在傳輸中間結(jié)果時,打開的文件個數(shù)。
[0089]4、通過圖4A所述的中間結(jié)果的多級緩存且多次歸并排序的存儲方式,使得最終存入中間結(jié)果文件中的數(shù)據(jù)實現(xiàn)了有序化,在此基礎(chǔ)上,圖5步驟15可在收集需要發(fā)送給同一Reduce任務(wù)的預(yù)定條中間結(jié)果后,統(tǒng)一對該預(yù)定條中間結(jié)果進行發(fā)送,以提高傳輸效率。
[0090]以上對本發(fā)明進行了詳細介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
【主權(quán)項】
1.一種基于Hadoop的數(shù)據(jù)傳輸方法,其特征在于,該方法包括: 中間結(jié)果文件產(chǎn)生步驟,建立一個中間結(jié)果文件以隨時存儲所有Map任務(wù)所產(chǎn)生的中間結(jié)果; 索引建立步驟,建立索引文件,根據(jù)該中間結(jié)果文件隨時更新該索引文件; 傳送步驟,當(dāng)根據(jù)該索引文件判斷出該中間結(jié)果文件中存在未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動時,主動向該Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果。2.如權(quán)利要求1所述的方法,其特征在于,該索引文件針對每個該中間結(jié)果設(shè)置一條索弓I,該索引記載有對應(yīng)的Reduce任務(wù)信息、傳輸標(biāo)志位以及中間結(jié)果在該中間結(jié)果文件中的偏移位置。3.如權(quán)利要求2所述的方法,其特征在于,該傳送步驟進一步包括: 當(dāng)所述Reduce任務(wù)成功接收到該中間結(jié)果之后,對該中間結(jié)果所對應(yīng)的索引中的傳輸標(biāo)志位更新為已傳輸。4.如權(quán)利要求2所述的方法,其特征在于,該中間結(jié)果文件產(chǎn)生步驟進一步包括: 步驟10,每個該Map任務(wù)將所產(chǎn)生的中間結(jié)果存儲在緩沖區(qū)中; 步驟20,當(dāng)該緩沖區(qū)的使用量達到緩沖區(qū)閾值后,將該緩沖區(qū)中存儲的所有中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到臨時溢出文件中; 步驟30,當(dāng)臨時溢出文件個數(shù)達到溢出文件閾值后,對所有臨時溢出文件中的中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到該中間結(jié)果文件中。5.如權(quán)利要求4所述的方法,其特征在于,該中間結(jié)果包括:關(guān)鍵字、值以及區(qū)域,該步驟20以及該步驟30中的歸并排序均為:按照區(qū)域進行排序,區(qū)域內(nèi)按照關(guān)鍵字進行排序。6.一種基于Hadoop的數(shù)據(jù)傳輸系統(tǒng),其特征在于,該系統(tǒng)包括: 中間結(jié)果文件產(chǎn)生單元,用于建立一個中間結(jié)果文件以隨時存儲所有Map任務(wù)所產(chǎn)生的中間結(jié)果; 索引建立單元,用于建立索引文件,根據(jù)該中間結(jié)果文件隨時更新該索引文件; 傳送單元,用于當(dāng)根據(jù)該索引文件判斷出該中間結(jié)果文件中存在未傳輸?shù)闹虚g結(jié)果且對應(yīng)的Reduce任務(wù)已經(jīng)啟動時,主動向該Reduce任務(wù)發(fā)送該未傳輸?shù)闹虚g結(jié)果。7.如權(quán)利要求6所述的系統(tǒng),其特征在于,該索引文件針對每個該中間結(jié)果設(shè)置一條索弓I,該索引記載有對應(yīng)的Reduce任務(wù)信息、傳輸標(biāo)志位以及中間結(jié)果在該中間結(jié)果文件中的偏移位置。8.如權(quán)利要求7所述的系統(tǒng),其特征在于,該傳送單元進一步包括一更新單元,用于當(dāng)所述Reduce任務(wù)成功接收到該中間結(jié)果之后,對該中間結(jié)果所對應(yīng)的索引中的傳輸標(biāo)志位更新為已傳輸。9.如權(quán)利要求7所述的系統(tǒng),其特征在于,該中間結(jié)果文件產(chǎn)生單元進一步包括: 第一存儲單元,用于將每個該Map任務(wù)將所產(chǎn)生的中間結(jié)果存儲在緩沖區(qū)中; 第二存儲單元,用于當(dāng)該緩沖區(qū)的使用量達到緩沖區(qū)閾值后,將該緩沖區(qū)中存儲的所有中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到臨時溢出文件中; 第三存儲單元,用于當(dāng)臨時溢出文件個數(shù)達到溢出文件閾值后,對所有臨時溢出文件中的中間結(jié)果進行歸并排序,將排序后的中間結(jié)果存儲到該中間結(jié)果文件中。10.如權(quán)利要求9所述的系統(tǒng),其特征在于,該中間結(jié)果包括:關(guān)鍵字、值以及區(qū)域,該第二存儲單元以及該第三存儲單元中的歸并排序均為:按照區(qū)域進行排序,區(qū)域內(nèi)按照關(guān)鍵字進彳丁排序。11.一種分布式文件系統(tǒng),其特征在于,包括權(quán)利要求6?1中任一所述的基于Hadoop的數(shù)據(jù)傳輸系統(tǒng)。
【文檔編號】G06F9/50GK105955819SQ201610243294
【公開日】2016年9月21日
【申請日】2016年4月18日
【發(fā)明人】曹政, 郭嘉梁, 李強
【申請人】中國科學(xué)院計算技術(shù)研究所