MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法
【專利摘要】本發(fā)明提出一種MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,包括以下步驟:S10、讀取原始數(shù)據(jù),將原始數(shù)據(jù)解析成獨(dú)立數(shù)據(jù)項(xiàng);S20、采用Shuffle?Grouping機(jī)制將所述輸入數(shù)據(jù)分發(fā)至各線程或進(jìn)程進(jìn)行處理;S30、對數(shù)據(jù)進(jìn)行哈希重組、排序,并采用Fields?Grouping機(jī)制將排序后數(shù)據(jù)分發(fā)至各線程或進(jìn)程;S40、各線程或進(jìn)程實(shí)時(shí)對緩沖池中數(shù)據(jù)進(jìn)行排序、分組;S50、將數(shù)據(jù)發(fā)送至線程或進(jìn)程進(jìn)行處理;S60、將返回的計(jì)算結(jié)果解析成獨(dú)立數(shù)據(jù)項(xiàng),重復(fù)步驟S20至S50,直至發(fā)出表示停止迭代的數(shù)據(jù)項(xiàng)。本發(fā)明可保持MapReduce的計(jì)算性能不因迭代而受到影響,也降低了虛擬機(jī)的創(chuàng)建和銷毀的開銷。
【專利說明】MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及一種MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法。
【【背景技術(shù)】】
[0002]在大數(shù)據(jù)時(shí)代,數(shù)據(jù)量成爆炸式增長,這對數(shù)據(jù)的計(jì)算處理提出了極高的要求。Hadoop生態(tài)圈的提出為海量數(shù)據(jù)的大規(guī)模計(jì)算和分布式可靠存儲(chǔ)提供了一個(gè)強(qiáng)大的工具。在Hadoop中,MapReduce是一個(gè)為海量數(shù)據(jù)計(jì)算提供可靠、易用、可規(guī)模化的關(guān)鍵組件,所基于的MapReduce計(jì)算框架對于許多數(shù)據(jù)分析和計(jì)算方法十分友好,這使得MapReduce計(jì)算框架在海量數(shù)據(jù)分析中具有廣泛的應(yīng)用。然而,在現(xiàn)實(shí)使用中,MapReduce計(jì)算框架下迭代計(jì)算執(zhí)行受到了 Hadoop生態(tài)圈實(shí)現(xiàn)的制約,從而導(dǎo)致迭代計(jì)算性能受到影響。
[0003]在MapReduce計(jì)算框架下,數(shù)據(jù)集MassiveDataSet會(huì)被劃分為若干個(gè)數(shù)據(jù)塊,然后每個(gè)Map處理一個(gè)數(shù)據(jù)塊,并輸出一個(gè)由key-value對組成的隊(duì)列,在shuffle階段,會(huì)對所有key-value對執(zhí)行哈希重組和根據(jù)key排序,組成key_value_list對,然后在Reduce階段,每個(gè)key_value_list對都會(huì)被單獨(dú)處理并輸出結(jié)果。
[0004]MapReduce計(jì)算框架下迭代計(jì)算受到以下限制:(I)兩個(gè)MapReduce任務(wù)之間的中間數(shù)據(jù)必須被寫回Hadoop Distributed File System中,因此導(dǎo)致性能受到損失。(2)Map和Reduce自身無法迭代執(zhí)行,如果要求迭代計(jì)算的話,需要串聯(lián)兩個(gè)MapReduce,導(dǎo)致Java虛擬機(jī)的創(chuàng)建和銷毀開銷,影響性能。為解決以上問題,現(xiàn)有技術(shù)采用串聯(lián)多個(gè)MapReduce任務(wù),然而依然存在如下缺點(diǎn): (I)兩個(gè)MapReduce任務(wù)之間的中間數(shù)據(jù)必須被寫回HadoopDistributed FileSystem (HDFS)中,因此導(dǎo)致性能損失。(2)Map和Reduce自身無法迭代執(zhí)行,如果要求迭代計(jì)算的話,需要串聯(lián)兩個(gè)MapReduce,導(dǎo)致Java虛擬機(jī)的創(chuàng)建和銷毀開銷,影響性能。
【
【發(fā)明內(nèi)容】
】
[0005]本發(fā)明旨在解決上述現(xiàn)有技術(shù)中存在的問題,提出一種MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法。
[0006]本發(fā)明提出的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,包括以下步驟:S10、ReadNode從Hadoop分布式文件系統(tǒng)中讀取原始數(shù)據(jù),并將所述原始數(shù)據(jù)解析成獨(dú)立數(shù)據(jù)項(xiàng),以所述獨(dú)立數(shù)據(jù)項(xiàng)作為MapNode的輸入數(shù)據(jù);S20、MapNode采用ShuffIe Grouping機(jī)制將所述輸入數(shù)據(jù)分發(fā)至MapNode的各線程或進(jìn)程進(jìn)行處理,對于每一所述獨(dú)立數(shù)據(jù)項(xiàng)輸出〈key, value〉格式數(shù)據(jù);S30、ShuffIeNode對〈key, value〉進(jìn)行哈希重組、基于key值執(zhí)行排序,并采用FieldsGrouping機(jī)制將排序后的〈key, value〉分發(fā)至ShuffleNode的各線程或進(jìn)程;S40、ShuffleNode的各線程或進(jìn)程實(shí)時(shí)將〈key, value〉存入本地KVlist緩沖池,直至收到表示數(shù)據(jù)發(fā)送完畢的〈key, value),基于key值對KVlist緩沖池中的〈key, value〉進(jìn)行排序、分組,對每一分組輸出{i,〈key, value_list>}格式數(shù)據(jù),其中,i為當(dāng)前線程或進(jìn)程編號(hào);S50、ReduceNode將{i,〈key, value_list>}發(fā)送至其第i個(gè)線程或進(jìn)程進(jìn)行處理,輸出〈key’ , value’ > ;S60>CoordinateNode 接收并緩沖〈key’ , value’ > 直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于〈key’,value’ >的計(jì)算結(jié)果返回至ReadNode, ReadNode將所述計(jì)算結(jié)果解析成獨(dú)立數(shù)據(jù)項(xiàng),重復(fù)步驟S20至S50進(jìn)行迭代,直至ReduceNode發(fā)出表示停止迭代的數(shù)據(jù)項(xiàng),CoordinateNode退出。
[0007]本發(fā)明提出的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法基于流式計(jì)算實(shí)現(xiàn)可迭代MapReduce計(jì)算框架,可保持MapReduce的計(jì)算性能不會(huì)因?yàn)榈艿接绊?。該方法使中間數(shù)據(jù)不用寫回分布式文件系統(tǒng),也避免java虛擬機(jī)的創(chuàng)建和銷毀的開銷,并可以支持更靈活和更高效的數(shù)據(jù)分析和處理算法的實(shí)現(xiàn)。
【【專利附圖】
【附圖說明】】
[0008]圖1為本發(fā)明提出的的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法流程圖。
[0009]圖2為為本發(fā)明實(shí)施例之一的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法拓?fù)浣Y(jié)構(gòu)圖。
[0010]圖3為為本發(fā)明實(shí)施例之二的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法拓?fù)浣Y(jié)構(gòu)圖。
[0011]圖4為為本發(fā)明實(shí)施例之三的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法拓?fù)浣Y(jié)構(gòu)圖。 【【具體實(shí)施方式】】
[0012]下面結(jié)合具體實(shí)施例及附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明的技術(shù)方案,而不應(yīng)當(dāng)理解為對本發(fā)明的限制。
[0013]在本發(fā)明的描述中,術(shù)語“內(nèi)”、“外”、“縱向”、“橫向”、“上”、“下”、“頂”、“底”等指
示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明而不是要求本發(fā)明必須以特定的方位構(gòu)造和操作,因此不應(yīng)當(dāng)理解為對本發(fā)明的限制。
[0014]本發(fā)明提供一種MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法。如圖1所示,該方法包括以下步驟:S10、ReadNode從Hadoop分布式文件系統(tǒng)中讀取原始數(shù)據(jù),并將所述原始數(shù)據(jù)解析成獨(dú)立數(shù)據(jù)項(xiàng),以所述獨(dú)立數(shù)據(jù)項(xiàng)作為MapNode的輸入數(shù)據(jù);S20、MapNode采用Shuffle Grouping機(jī)制將所述輸入數(shù)據(jù)分發(fā)至MapNode的各線程或進(jìn)程進(jìn)行處理,對于每一所述獨(dú)立數(shù)據(jù)項(xiàng)輸出〈key, value〉格式數(shù)據(jù);S30、ShuffleNode對〈key, value〉進(jìn)行哈希重組、基于key值執(zhí)行排序,并采用Fields Grouping機(jī)制將排序后的〈key, value〉分發(fā)至ShuffleNode的各線程或進(jìn)程;S40、Shuff IeNode的各線程或進(jìn)程實(shí)時(shí)將〈key, value〉存入本地KVlist緩沖池,直至收到表示數(shù)據(jù)發(fā)送完畢的〈key, value),基于key值對KVlist緩沖池中的〈key, value〉進(jìn)行排序、分組,對每一分組輸出{i,〈key, value_list>}格式數(shù)據(jù),其中,i為當(dāng)前線程或進(jìn)程編號(hào);S50、ReduceNode將{i, <key, value_list>}發(fā)送至其第i個(gè)線程或進(jìn)程進(jìn)行處理,輸出〈key’ , value’ > ;S60> CoordinateNode接收并緩沖〈key’,value’ >直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于〈key’,value’ >的計(jì)算結(jié)果返回至ReadNode, ReadNode將所述計(jì)算結(jié)果解析成獨(dú)立數(shù)據(jù)項(xiàng),重復(fù)步驟S20至S50進(jìn)行迭代,直至ReduceNode發(fā)出表示停止迭代的數(shù)據(jù)項(xiàng),CoordinateNode 退出。
[0015]具體地,可一并參照圖2。本發(fā)明提出的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法基于流式計(jì)算,即使用流式計(jì)算實(shí)現(xiàn)MapReduce計(jì)算框架的Map階段、Shuffle階段、Reduce階段并使用流式計(jì)算實(shí)現(xiàn)迭代機(jī)制。
[0016]本發(fā)明提出的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法的整個(gè)拓?fù)浣Y(jié)構(gòu)由五種節(jié)點(diǎn)構(gòu)成:ReadNode, MapNode, ShuffleNode, ReduceNode, CoordinateNode。ReadNode負(fù)責(zé)從分布式文件系統(tǒng)(Hadoop Distributed FileSystem, HDFS)中讀取原始數(shù)據(jù),并解析成一個(gè)個(gè)獨(dú)立的數(shù)據(jù)項(xiàng)輸入拓?fù)浣Y(jié)構(gòu)中;MapNode負(fù)責(zé)實(shí)現(xiàn)MapReduce計(jì)算框架的Map階段,該節(jié)點(diǎn)的線程或進(jìn)程數(shù)量決定了 Map數(shù)量;ShuffleNode負(fù)責(zé)實(shí)現(xiàn)MapReduce計(jì)算框架的Shuffle階段,該節(jié)點(diǎn)的線程或進(jìn)程數(shù)量等于ReduceNode的線程或進(jìn)程數(shù)量;ReduceNode負(fù)責(zé)實(shí)現(xiàn)MapReduce計(jì)算框架的Reduce階段,該節(jié)點(diǎn)的線程或進(jìn)程數(shù)量決定了Reduce數(shù)量。CoordinateNode負(fù)責(zé)執(zhí)行迭代時(shí)的數(shù)據(jù)收集和數(shù)據(jù)同步。
[0017]其中,MapNode用于實(shí)現(xiàn)MapReduce計(jì)算框架中的Map階段,MapNode接收ReadNode輸出的數(shù)據(jù)項(xiàng),優(yōu)選地,MapNode中的線程或進(jìn)程數(shù)就是Map數(shù)量,這與“Hadoop的MapReduce計(jì)算框架的Map數(shù)量由數(shù)據(jù)塊數(shù)量決定”不一樣;由于數(shù)據(jù)集中的數(shù)據(jù)項(xiàng)之間沒有關(guān)聯(lián)性,所以為了平衡各個(gè)線程或進(jìn)程的計(jì)算負(fù)載,MapNode使用shuffIeGrouping機(jī)制來分發(fā)其所接收到的數(shù)據(jù)給各個(gè)線程或進(jìn)程,對于每個(gè)數(shù)據(jù)項(xiàng),MapNode執(zhí)行計(jì)算并輸出一個(gè)〈key, value〉;當(dāng)MapNode接收到一個(gè)特定表示數(shù)據(jù)集發(fā)送完畢的數(shù)據(jù)項(xiàng)時(shí),貝U輸出一個(gè)特定表示數(shù)據(jù)發(fā)送完畢的〈key, value) ;ShuffleNode用于實(shí)現(xiàn)MapReduce計(jì)算框架中的Shuffle階段,ShuffleNode接收MapNode輸出的數(shù)據(jù)項(xiàng),優(yōu)選地,ShuffleNode中的線程或進(jìn)程數(shù)等于ReduceNode的線程或者進(jìn)程數(shù),Shuff IeNode中一個(gè)線程的所有輸出都必須由ReduceNode中任一對應(yīng)的線程接收;ShuffleNode負(fù)責(zé)對所接收到的〈key, value〉進(jìn)行哈希重組,并且根據(jù)key執(zhí)行排序,因此ShuffleNode使用FieldsGrouping來分發(fā)所接收到的〈key, value〉;ShuffleNode的每個(gè)線程或進(jìn)程,對于接收到的一個(gè)〈key, value〉,先將其放入本地的一個(gè)緩沖池(KVlist),直到接收到一個(gè)特定表示所有數(shù)據(jù)發(fā)送完畢的〈key, value〉,當(dāng)ShuffleNode的一個(gè)線程或進(jìn)程接收到一個(gè)特定表示所有數(shù)據(jù)發(fā)送完畢的〈key, value)后,則基于key,先對KVlist中所有〈key, value)進(jìn)行排序,然后再把所有〈key, value)分組,把相同key的〈key, value)歸到一組。對于一個(gè)分組,生成一個(gè)〈key, value_list>,最終輸出{i,〈key, value_list>},其中,i為當(dāng)前線程或進(jìn)程的編號(hào);當(dāng)一個(gè)線程處理完KVlist后,輸出一個(gè)特定表示數(shù)據(jù)發(fā)送完畢的數(shù)據(jù)項(xiàng)。
[0018]ReduceNode用于實(shí)現(xiàn)MapReduce計(jì)算框架中的Reduce階段,ReduceNode接收ShuffleNode輸出的數(shù)據(jù)項(xiàng):對于{i,〈key, value_list>},則發(fā)送到ReduceNode的第i個(gè)線程或進(jìn)程
[0019]對于ReduceNode的一個(gè)線程或進(jìn)程來說,每接收到一個(gè){i,〈key, value_list>},則處理一個(gè)〈key, value_list>并輸出以〈key’ , value’ >格式輸出結(jié)果。
[0020]CoordinateNode負(fù)責(zé)迭代機(jī)制的數(shù)據(jù)緩沖、數(shù)據(jù)同步和數(shù)據(jù)計(jì)算。CoordinateNode對于接收到的數(shù)據(jù)分配給其內(nèi)部各個(gè)線程或進(jìn)程的機(jī)制由具體應(yīng)用而定。
[0021]當(dāng)一個(gè)節(jié)點(diǎn)Nodei需要執(zhí)行迭代操作時(shí),Nodei先把數(shù)據(jù)項(xiàng)發(fā)送到CoordinateNode中,CoordinateNode會(huì)接收并緩沖所有數(shù)據(jù)項(xiàng)直到接收到一個(gè)特定表示發(fā)送完畢的數(shù)據(jù)項(xiàng),然后Coordinate會(huì)基于所接收到的數(shù)據(jù)項(xiàng)執(zhí)行計(jì)算,并把計(jì)算結(jié)果返回給Nodei,直到Nodei發(fā)出一個(gè)特定表示停止迭代的數(shù)據(jù)項(xiàng)時(shí),CoordinateNode將退出。
[0022]其中圖2所示為:CoordinateNode接收并緩沖〈key’ , value’ >直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于〈key’,value’ >的計(jì)算結(jié)果返回至ReadNode, ReadNode將所述計(jì)算結(jié)果解析成獨(dú)立數(shù)據(jù)項(xiàng),重復(fù)步驟S20至S50進(jìn)行迭代,直至ReduceNode發(fā)出表示停止迭代的數(shù)據(jù)項(xiàng),CoordinateNode退出
[0023]圖3所示為在執(zhí)行步驟S20之后,CoordinateNode接收并緩沖〈key, value〉直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于〈key, value)的計(jì)算結(jié)果返回至MapNode,再以該計(jì)算結(jié)果作為MapNode的輸入數(shù)據(jù)重新執(zhí)行步驟S20。
[0024]圖4所示為在執(zhí)行步驟S40之后,CoordinateNode接收并緩沖{i,〈key, value_list〉}直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于{i,〈key, value_list〉}的計(jì)算結(jié)果返回至ShuffleNode,再以該計(jì)算結(jié)果作為ShuffleNode的輸入數(shù)據(jù)重新執(zhí)行步驟S30以及S40。
[0025]對于圖3所描述的實(shí)施例,舉例而言,對于一個(gè)數(shù)據(jù)集Set,首先ReadNode會(huì)接收并解析成一個(gè)個(gè)數(shù)據(jù)項(xiàng)DataEntryi,然后發(fā)送給MapNode ;MapNode把接收到的數(shù)據(jù)項(xiàng)按照ShuffleGrouping的方式分發(fā)給其內(nèi)部的各個(gè)線程,對于MapNode中的一個(gè)線程來說,處理一個(gè)數(shù)據(jù)項(xiàng),輸出{type,〈key, value〉},其中type為一個(gè)4位的標(biāo)識(shí)符,描述了是否需要迭代,數(shù)據(jù)是否發(fā)送完畢等額外信息。
[0026]CoordinateNodel和ShuffleNode都會(huì)收到MapNode的輸出,如果輸入的數(shù)據(jù)項(xiàng)中type表示需要迭代,則ShuffleNode會(huì)忽略所接收到的數(shù)據(jù)項(xiàng)。CoordinateNode將會(huì)接收數(shù)據(jù)項(xiàng)并緩存到一個(gè)數(shù)組中,直到接收到一個(gè)特定表示數(shù)據(jù)發(fā)送完畢。當(dāng)數(shù)據(jù)接收完畢后,CoordinateNode開始處理數(shù)據(jù)項(xiàng)數(shù)組并輸出一個(gè)〈key, value)描述處理結(jié)果,MapNode接收CoordinateNode的輸出,并再次進(jìn)行處理。
[0027]迭代終止時(shí),MapNode需要在輸出的{type,〈key, value〉}的type中設(shè)置相應(yīng)位以表示迭代結(jié)束。
[0028]ShuffleNode接收MapNode的輸出,同樣首先檢查type,如果type表示迭代終止,則ShuffleNode開始接收數(shù)據(jù)項(xiàng){type,〈key, value〉}并緩存到一個(gè)數(shù)組中,直到接收到一個(gè)數(shù)據(jù)項(xiàng),其type表示數(shù)據(jù)發(fā)送完畢。當(dāng)數(shù)據(jù)接收完畢后,ShufTleNode首先基于key,對數(shù)據(jù)項(xiàng)數(shù)組中所有的〈key, value)進(jìn)行排序,然后進(jìn)行分組,把相同key的〈key, value)放到一個(gè)分組中,然后對于每個(gè)分組生成〈key, value_list> (value_list為一個(gè)value鏈表),然后輸出!type’,〈key, value_list>}。
[0029]ReduceNode 接收到 ShuffleNode 的輸出的數(shù)據(jù)項(xiàng){type,,〈key, value_list>},然后處理并以〈key’ , value’ >形式輸出結(jié)果。
[0030]CoordinateNode2 接收 ReduceNode 的輸出,和 CoordinateNodel — 樣,CoordinateNode2接收數(shù)據(jù)項(xiàng)并緩存到一個(gè)數(shù)組中,直到接收到一個(gè)特定表示數(shù)據(jù)發(fā)送完畢。當(dāng)數(shù)據(jù)接收完畢后,CoordinateNode2開始處理數(shù)據(jù)項(xiàng)數(shù)組并以〈key, value〉形式描述處理結(jié)果并輸出。
[0031]ReadNode接收CoordinateNode2的輸出并向整個(gè)框架再次輸入需要處理的數(shù)據(jù)。[0032]本發(fā)明提出的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法基于流式計(jì)算實(shí)現(xiàn)可迭代MapReduce計(jì)算框架,可保持MapReduce的計(jì)算性能不會(huì)因?yàn)榈艿接绊?。該方法使中間數(shù)據(jù)不用寫回分布式文件系統(tǒng),也避免java虛擬機(jī)的創(chuàng)建和銷毀的開銷,并可以支持更靈活和更高效的數(shù)據(jù)分析和處理算法的實(shí)現(xiàn)。
[0033]本發(fā)明提出的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法已通過使用Storm流式計(jì)算工具實(shí)現(xiàn),實(shí)驗(yàn)效果良好。
[0034]雖然本發(fā)明參照當(dāng)前的較佳實(shí)施方式進(jìn)行了描述,但本領(lǐng)域的技術(shù)人員應(yīng)能理解,上述較佳實(shí)施方式僅用來解釋和說明本發(fā)明的技術(shù)方案,而并非用來限定本發(fā)明的保護(hù)范圍,任何在本發(fā)明的精神和原則范圍之內(nèi),所做的任何修飾、等效替換、變形、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,包括以下步驟: S10、ReadNode從Hadoop分布式文件系統(tǒng)中讀取原始數(shù)據(jù),并將所述原始數(shù)據(jù)解析成獨(dú)立數(shù)據(jù)項(xiàng),以所述獨(dú)立數(shù)據(jù)項(xiàng)作為MapNode的輸入數(shù)據(jù); S20、MapNode采用Shuffle Grouping機(jī)制將所述輸入數(shù)據(jù)分發(fā)至MapNode的各線程或進(jìn)程進(jìn)行處理,對于每一所述獨(dú)立數(shù)據(jù)項(xiàng)輸出〈key,value〉格式數(shù)據(jù); S30>ShuffleNode對〈key, value)進(jìn)行哈希重組、基于key值執(zhí)行排序,并采用FieldsGrouping機(jī)制將排序后的〈key, value〉分發(fā)至ShuffleNode的各線程或進(jìn)程; S40、ShuffIeNode的各線程或進(jìn)程實(shí)時(shí)將〈key, value〉存入本地KVlist緩沖池,直至收到表示數(shù)據(jù)發(fā)送完畢的〈key, value〉,基于key值對KVlist緩沖池中的〈key, value)進(jìn)行排序、分組,對每一分組輸出{i,〈key,ValUe_liSt>}格式數(shù)據(jù),其中,i為當(dāng)前線程或進(jìn)程編號(hào); S50、ReduceNode將{i,〈key, value_list>}發(fā)送至其第i個(gè)線程或進(jìn)程進(jìn)行處理,輸出〈key,, value,> ; S60、CoordinateNode接收并緩沖〈key’,value’〉直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于〈key’ , value’ >的計(jì)算結(jié)果返回至ReadNode,ReadNode將所述計(jì)算結(jié)果解析成獨(dú)立數(shù)據(jù)項(xiàng),重復(fù)步驟S20至S50進(jìn)行迭代,直至ReduceNode發(fā)出表示停止迭代的數(shù)據(jù)項(xiàng),CoordinateNode退出。
2.根據(jù)權(quán)利要求1所述的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,其特征在于,在執(zhí)行步驟S20之后,CoordinateNode接收并緩沖〈key, value)直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于〈key, value〉的計(jì)算結(jié)果返回至MapNode ,再以該計(jì)算結(jié)果作為MapNode的輸入數(shù)據(jù)重新執(zhí)行步驟S20。
3.根據(jù)權(quán)利要求1所述的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,其特征在于,在執(zhí)行步驟S40之后,CoordinateNode接收并緩沖{i,〈key, value_list>}直至接收到表示發(fā)送完畢的數(shù)據(jù)項(xiàng),CoordinateNode將基于{i,〈key, value_list>}的計(jì)算結(jié)果返回至ShuffleNode,再以該計(jì)算結(jié)果作為ShuffleNode的輸入數(shù)據(jù)重新執(zhí)行步驟S30以及S40。
4.根據(jù)權(quán)利要求1所述的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,其特征在于,MapNode中的線程或進(jìn)程數(shù)量即為Map數(shù)量。
5.根據(jù)權(quán)利要求1所述的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,其特征在于,當(dāng)MapNode接收到表示所述獨(dú)立數(shù)據(jù)項(xiàng)發(fā)送完畢的數(shù)據(jù)項(xiàng)時(shí),則輸出表示數(shù)據(jù)項(xiàng)發(fā)送完畢的〈key, value〉。
6.根據(jù)權(quán)利要求1所述的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,其特征在于,ShuffleNode中的線程或進(jìn)程數(shù)與ReduceNode中的線程或進(jìn)程數(shù)相等。
7.根據(jù)權(quán)利要求6所述的MapReduce計(jì)算框架下的可迭代式數(shù)據(jù)處理方法,其特征在于,ShuffleNode中每一線程或進(jìn)程的所有輸出均由ReduceNode中一線程或進(jìn)程接收。
【文檔編號(hào)】G06F9/455GK103699442SQ201310686716
【公開日】2014年4月2日 申請日期:2013年12月12日 優(yōu)先權(quán)日:2013年12月12日
【發(fā)明者】鄒瑜斌, 張帆, 須成忠 申請人:深圳先進(jìn)技術(shù)研究院