用于MapReduce的中間結果數據排序方法及系統的制作方法
【專利摘要】本發明提出了一種用于MapReduce的中間結果數據的排序方法,包括以下步驟:從映射任務服務器獲取映射任務產生的多個中間結果數據;根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組;分別通過N個線程對所述N組內的中間結果數據進行排序;以及將排序后的N組中間結果數據從內存中寫入本地磁盤。根據本發明實施例的用于MapReduce的中間結果數據的排序方法,可有效降低MapReduce的中間結果數據從內存寫入硬盤之前對多個中間數據進行排序的排序時間,有效提升排序效率。本發明還提出了一種用于MapReduce的中間結果數據的排序系統。
【專利說明】用于MapReduce的中間結果數據排序方法及系統
【技術領域】
[0001]本發明涉及云計算【技術領域】,特別涉及一種用于MapReduce的中間結果數據的排序方法及系統。
【背景技術】
[0002]當前云計算領域中,MapReduce是其中的一種簡單流行但功能強大的編程模型,用于大規模數據集(大于1TB)的并行運算。MapReduce的應用非常廣泛,包括:分布grep,分布排序,web連接圖反轉,每臺機器的詞矢量,web訪問日志分析,反向索引構建,文檔聚類,機器學習等。
[0003]MapReduce不要求集群的計算節點是大型機,只要普通機器即可。MapReduce操作的數據是分布在多臺機器(節點)上的海量數據,這些數據都存儲在一個分布式的文件系統中,文件系統會對外提供對文件進行流式操作的一些接口。MapReduce編程模型的核心思想是分而治之,一個用MapReduce框架編寫的作業通常由兩部分組成,映射(Map)階段和化簡(Reduce)階段。這兩個階段的邏輯為:
[0004]Map (映射)階段:框架執行多個映射任務(map task),從分布式文件系統中讀入對應的要處理的數據,使用map函數對每一條數據進行(映射)處理,并將結果按序寫入本地磁盤。
[0005]Reduce (化簡)階段:框架執行一個或多個reduce task,通過網絡獲取所有由Map階段產生的數據,使用reduce函數對其做進一步(化簡)處理,將結果寫到分布式文件系統中。
[0006]Map階段的主體部分是用戶自定義的map函數,它的輸入為一個域上的(key, value)對,它的輸出為另一域上(key, value)對的鏈表。
[0007]Map (kl, vl) — list (k2, v2)
[0008]map函數會并行地應用于全部輸入數據,從而為每個輸入(kl,vl)生成一系列(k2, v2)對。Reduce階段的reduce函數也由用戶自定義,MapReduce框架會將所有k2相同的(k2,v2)收集起來形成一組,并將所有組按一定規則分發給reduce進行處理。每個組將被應用Reduce函數,生成O個或多個值。Reduce (k2, list (v2)) — list(v3)
[0009]如圖2所示,MapTask的輸出輔助類都繼承自MapOutputCollector,如果Mapper后續有reduce任務,系統會使用MapOutputBuffer這個繼承類做為輸出。這些輸出被稱為map的中間結果,這些中間結果可能很大,并且在交給reduce之前,需要進行排序,即每一個map的輸出都是事先排好序的,這樣交給reduce后reduce才可以在已經排好序的多個map輸入基礎上多路歸并,從而讓reduce的輸入成為全局有序。在map端的中間結果會臨時存放在一個內存buffer中,但是這個內存buffer容量有限,當buffer滿了或者用量達到一定閾值就會觸發spill過程,把buffer中的數據刷到硬盤上,在硬盤上生成臨時的spillO, spilll文件,這些臨時文件在寫硬盤前需要先在內存中排好序,spill文件本身是一次spill的數據的有序排列。當map過程結束,全部數據都輸出以后,mapoutputbuffer會根據硬盤上的spill文件進行多路歸并,合成一個有序的最終文件file, out并且生成這個文件對應的索引文件。
[0010] 如圖3所示,在map過程中,用戶程序打出的record都會由mapoutputbuffer的類來接收,這個類中有一個名為buffer的byte數組,用于存放具體record中key, value序列化后的byte,存放方式是key, value連續緊湊存放,同時還有兩個int數組,用于存放關于每一條record的元數據,其中一個存放的是每條record對應的keyvalue的partition,keystart, valstart,名為kvindices (中間數據索引),每一個record在buffer中的存放位置和它所屬的partition就由這樣一個三元組來描述,每一個三元組就是三個int變量,
每個三兀組在 int 數組中--相鄰,〈partition, keystart, valstartXpartition, keysta
rt, valstart〉…另外還有一個int數組名為kvoffsets (分片位置索引),作為kvindices的索引數組,這個里面每個record只對應一個int值,這個值指向kvindices中對應的每條記錄的三元組中第一個int即partition的位置。這樣就構成了 record的序號
(kvoffsets) ->record 的兀數據(kvindices) ->record 實際數據(kvbuffer)的二
級索引關系。在排序的時候不需要操作在kvbuffer中的真實數據,而只需要根據索引指向讀到需要比較的record的key,然后把比較結果反應到kvoffsets這個序號數組中,即只對kvoffsets排序即可,kvindices和kvbuffer中的數據物理位置不需要改變,由kvoffsets中元素的位置變化來表示排序的結果。 [0011 ] 經過排序后的數據,根據kvoffsets的順序,從buffer中讀取key和value的byte數組,寫到spill文件中。但是這一過程中存在一個問題,由于多數情況下,排序的速度相比用戶程序輸出record的速度要慢很多,因而很容易造成當buffer滿了,但是spill線程工作還沒有完成,這樣寫數據的用戶線程就會堵住,直到spill完成內存中的數據被釋放,這會造成一定的延時。
【發明內容】
[0012]本發明的目的旨在至少解決所述技術缺陷之一。
[0013]為此,本發明的一個目的在于提出一種可有效降低MapReduce的中間結果數據從內存寫入硬盤之前對多個中間數據進行排序的排序時間,有效提升排序效率的用于MapReduce的中間結果數據的排序方法。
[0014]本發明的另一個目的在于提出一種用于MapReduce的中間結果數據的排序系統。
[0015]為達到上述目的,本發明第一方面的實施例公開了一種用于MapReduce的中間結果數據的排序方法,包括以下步驟:從映射任務服務器獲取映射任務產生的多個中間結果數據;根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組;分別通過N個線程對所述N組內的中間結果數據進行排序;以及將排序后的N組中間結果數據從內存中寫入本地磁盤。
[0016]根據本發明實施例的用于MapReduce的中間結果數據的排序方法,緩解在map輸出過程中,由于記錄輸出速度大于spill排序速度,因而緩沖區buffer因為被填滿導致無法寫入被迫等待spill完成釋放內存所造成的延時。通過本發明實施例的用于MapReduce的中間結果數據的排序方法,利用 分治思想把中間數據排序分成小份處理,同時基于partition的分組,簡化了比較邏輯,利用多線程進行排序,大大加快了排序速度,降低了寫入(spill)時間,從而緩解了在spill過程中buffer被寫滿而不得不等待spill完成帶來的延時。具體地,在spill時,待排序的所有record針對partition分組,對每一個partition內部使用單獨的線程排序,例如:使用hadoop自帶的wordcount對本發明實施例的排序方法進行測試,開啟三線程map平均加速30%左右。
[0017]另外,根據本發明上述實施例的用于MapReduce的中間結果數據的排序方法還可以具有如下附加的技術特征:
[0018]在一些示例中,還包括:簡化任務服務器從所述本地磁盤中獲取排序后的N組中間數據結果,并對所述N組中間數據結果進行簡化任務處理。
[0019]在一些示例中,所述根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組,進一步包括:創建分片索引二維數組;將多個所述中間結果數據所屬的分片合并后存儲在所述分片索引二維數組的第一維存儲空間中;將每個分片位置索引存儲在所述分片索引二維數組的第二維存儲空間中;根據所述第一維存儲空間存儲的多個分片對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引進行排序。
[0020]在一些示例中,對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引通過一個線程進行排序。
[0021]本發明第二方面的實施例提供了一種用于MapReduce的中間結果數據的排序系統,包括:本地服務器和映射服務器,其中,所述映射服務器用于執行映射任務以生成多個中間結果數據;所述本地服務器用于從所述映射任務服務器獲取所述多個中間結果數據,并根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組,并分別通過N個線程對所述N組內的中間結果數據進行排序,以及將排序后的N組中間結果數據從內存中寫入本地磁盤。
[0022]根據本發明實施例的用于MapReduce的中間結果數據的排序系統,緩解在map輸出過程中,由于記錄輸出速度大于spill排序速度,因而緩沖區buffer因為被填滿導致無法寫入被迫等待spill完成釋放內存所造成的延時。通過本發明實施例的用于MapReduce的中間結果數據的排序系統,利用分治思想把中間數據排序分成小份處理,同時基于partition的分組,簡化了比較邏輯,利用多線程進行排序,大大加快了排序速度,降低了寫入(spill)時間,從而緩解了在spill過程中buffer被寫滿而不得不等待spill完成帶來的延時。具體地,在spill時,待排序的所有record針對partition分組,對每一個partition內部使用單獨的線程排序,例如:使用hadoop自帶的wordcount對本發明實施例的排序方法進行測試,開啟三線程map平均加速30%左右。
[0023]另外,根據本發明上述實施例的用于MapReduce的中間結果數據的排序系統還可以具有如下附加的技術特征:
[0024]在一些示例中,還包括:簡化服務器,所述簡化服務器用于從所述本地服務器的本地磁盤中獲取排序后的N組中間數據結果,并對所述N組中間數據結果進行簡化任務處理。
[0025]在一些示例中,所述本地服務器根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組,包括:創建分片索引二維數組,將多個所述中間結果數據所屬的分片合并后存儲在所述分片索引二維數組的第一維存儲空間中,并將每個分片位置索引存儲在所述分片索引二維數組的第二維存儲空間中,以及根據所述第一維存儲空間存儲的多個分片對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引進行排序。[0026]在一些示例中,所述本地服務器對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引是通過一個獨立的線程進行排序的。
[0027]本發明附加的方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發明的實踐了解到。
【專利附圖】
【附圖說明】
[0028]本發明所述的和/或附加的方面和優點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0029]圖1是根據本發明一個實施例的用于MapReduce的中間結果數據的排序方法的流程圖;
[0030]圖2是現有技術中通過MapReduce產生的中間結果數據從內存寫入硬盤時的流向圖;
[0031]圖3是現有技術中對通過MapReduce產生的中間結果數據從內存寫入硬盤之前對中間結果數據進行排序的索引結構示意圖;
[0032]圖4是根據本發明一個實施例的用于MapReduce的中間結果數據的排序方法的對通過MapReduce產生的中間結果數據從內存寫入硬盤之前對中間結果數據進行排序的索引結構示意圖;以及
[0033]圖5是根據本發明一個實施例的用于MapReduce的中間結果數據的排序系統的示意圖。
【具體實施方式】
[0034]下面詳細描述本發明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發明,而不能解釋為對本發明的限制。
[0035]在本發明的描述中,需要理解的是,術語“縱向”、“橫向”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底” “內”、“外”等指示的方位或位置關系為基于附圖所示的方位或位置關系,僅是為了便于描述本發明和簡化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構造和操作,因此不能理解為對本發明的限制。
[0036]在本發明的描述中,需要說明的是,除非另有規定和限定,術語“安裝”、“相連”、“連接”應做廣義理解,例如,可以是機械連接或電連接,也可以是兩個元件內部的連通,可以是直接相連,也可以通過中間媒介間接相連,對于本領域的普通技術人員而言,可以根據具體情況理解所述術語的具體含義。
[0037]以下結合附圖描述根據本發明實施例的用于MapReduce的中間結果數據的排序方法及系統。
[0038]圖1是根據本發明一個實施例的用于MapReduce的中間結果數據的排序方法的流程圖。如圖1所示,根據本發明一個實施例的用于MapReduce的中間結果數據的排序方法,包括以下步驟:
[0039]步驟SlOl:從映射任務服務器獲取映射任務產生的多個中間結果數據。[0040]步驟S102:根據多個中間結果數據所屬的分片將多個中間結果數據分為N組。
[0041]作為一個具體的示例,根據多個中間結果數據所屬的分片將多個中間結果數據分為N組,進一步包括:
[0042]1、創建分片索引二維數組。
[0043]2、將多個中間結果數據所屬的分片合并后存儲在分片索引二維數組的第一維存儲空間中。
[0044]3、將每個分片位置索引存儲在分片索引二維數組的第二維存儲空間中。
[0045]4、根據第一維存儲空間存儲的多個分片對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引進行排序。
[0046]具體而言,如圖3所示,通過對中間結果數據從內存寫入(spill)硬盤時排序的【背景技術】可知,排序過程是使用分片位置索引(kvoffsets)作為索弓丨,指向具體內存(buffer)中的key實際數據進行比較,然后交換kvoffsets中的索引位置,從而實現最終這次spill的所有record優先按照分片partition排序,然后partition再按照key定義的comparator排序的邏輯。并且整個過程都是由單線程完成。假設record總數量為n,使用快速排序,時間復雜度是nlogn。
[0047]由于比較規則每一次元素的兩兩比較需要兩步比較邏輯,并且要一次性排序全部的record,對于具體的排序算法而言如果η比較大,在比較邏輯也復雜的情況下都不會有很好的效果。而如果能把待排序的record分成r份,對每一份的部分record排序,那么時
間復雜度就是為》即數據規模越小,排序速度的提高是非線性的。對于這里
r rr,
的record來說,最合適的是在排序前就按照分片partition數量分成r份,則排序只需要對同partition內部的key進行比較,不需要再比較分片partition,可以把兩步邏輯減少到一步。并且,如果對已經按照分片partition分好的record,每一個partition使用一個單獨的線程排序屬于這個partition的數據,partition之間互不干擾,則可以實現多線程并行排序。
[0048]更為具體地,例如在mapoutputbuffer類中加入一個輔助的二維數組作為新索弓I,即分片索引二維數組,記為:partitionIndexes[][],第一維是分片partition,第二維是該partition對應的record在中間數據索引:kvindices的索引,在每一次record寫入時,記錄該record對應的partition計數加I,當每次spill開始時,根據partition計數初始化分片索引二維數組partitionlndexes的第二維元素數量,然后過一遍需要spill區間的kvoffsets,把每一條記錄在kvindices里的索引填入partitionlndexes口 []的對應partition對應的數組中,這樣最終就把分片位置索引kvoffsets中要排序的record在partitionlndexes[][]中都重新建立了一遍新的索引和映射關系。
[0049]步驟S103:分別通過N個線程對N組內的中間結果數據進行排序。例如:如圖4所示,倉Il建多個線程(如ThreadO至Thread3),對每個分片partition內部的record進行排序,即對partitionlndexes的第二維數組排序即可。
[0050]步驟S104:將排 序后的N組中間結果數據從內存中寫入本地磁盤。在本發明的一個實施例中,對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引通過一個線程進行排序。例如:在步驟S103中排好序后,使用partitionlndexes作為輸出到硬盤的索弓丨,從第一維的O下標開始,代表partitionO,依次如果有數據則把在內存buffer中對應的keyvalue寫入硬盤即可。
[0051 ] 在本發明的一個實施例中,還包括:簡化任務服務器從本地磁盤中獲取排序后的N組中間數據結果,并對N組中間數據結果進行簡化任務處理。即對排序后存儲在本地硬盤中的中間結果數據進行化簡任務(Reduce Task)。
[0052]根據本發明實施例的用于MapReduce的中間結果數據的排序方法,緩解在map輸出過程中,由于記錄輸出速度大于spill排序速度,因而緩沖區buffer因為被填滿導致無法寫入被迫等待spill完成釋放內存所造成的延時。通過本發明實施例的用于MapReduce的中間結果數據的排序方法,利用分治思想把中間數據排序分成小份處理,同時基于partition的分組,簡化了比較邏輯,利用多線程進行排序,大大加快了排序速度,降低了寫入(spill)時間,從而緩解了在spill過程中buffer被寫滿而不得不等待spill完成帶來的延時。具體地,在spill時,待排序的所有record針對partition分組,對每一個partition內部使用單獨的線程排序,例如:使用hadoop自帶的wordcount對本發明實施例的排序方法進行測試,開啟三線程map平均加速30%左右。
[0053]圖5是根據本發明一個實施例的用于MapReduce的中間結果數據的排序系統的示意圖。如圖5所示,根據本發明一個實施例的用于MapReduce的中間結果數據的排序系統500,包括:本地服務器510和映射服務器520。 [0054]其中,映射服務器520用于執行映射任務以生成多個中間結果數據。本地服務器510用于從映射任務服務器520獲取多個中間結果數據,并根據多個中間結果數據所屬的分片將多個中間結果數據分為N組,并分別通過N個線程對N組內的中間結果數據進行排序,以及將排序后的N組中間結果數據從內存中寫入本地磁盤。
[0055]作為一個具體的示例,本地服務器510根據多個中間結果數據所屬的分片將多個所述中間結果數據分為N組,包括:創建分片索引二維數組,將多個中間結果數據所屬的分片合并后存儲在分片索引二維數組的第一維存儲空間中,并將每個分片位置索引存儲在分片索引二維數組的第二維存儲空間中,以及根據第一維存儲空間存儲的多個分片對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引進行排序。
[0056]具體而言,如圖3所示,通過對中間結果數據從內存寫入(spill)硬盤時排序的【背景技術】可知,排序過程是使用分片位置索引(kvoffsets)作為索弓丨,指向具體內存(buffer)中的key實際數據進行比較,然后交換kvoffsets中的索引位置,從而實現最終這次spill的所有record優先按照分片partition排序,然后partition再按照key定義的comparator排序的邏輯。并且整個過程都是由單線程完成。假設record總數量為n,使用快速排序,時間復雜度是nlogn。
[0057]由于比較規則每一次元素的兩兩比較需要兩步比較邏輯,并且要一次性排序全部的record,對于具體的排序算法而言如果η比 較大,在比較邏輯也復雜的情況下都不會有很好的效果。而如果能把待排序的record分成r份,對每一份的部分record排序,那么時
間復雜度就是〃即數據規模越小,排序速度的提高是非線性的。對于這里 的record來說,最合適的是在排序前就按照分片partition數量分成r份,則排序只需要對同partition內部的key進行比較,不需要再比較分片partition,可以把兩步邏輯減少到一步。并且,如果對已經按照分片partition分好的record,每一個partition使用一個單獨的線程排序屬于這個partition的數據,partition之間互不干擾,則可以實現多線程并行排序。
[0058]更為具體地,例如在mapoutputbuffer類中加入一個輔助的二維數組作為新索弓I,即分片索引二維數組,記為:partitionIndexes口 □,第一維是分片partition,第二維是該partition對應的record在中間數據索引:kvindices的索弓I,在每一次record寫入時,記錄該record對應的partition計數加I,當每次spill開始時,根據partition計數初始化分片索引二維數組partitionlndexes的第二維元素數量,然后過一遍需要spill區間的kvoffsets,把每一條記錄在kvindices里的索引填入partitionlndexes口 []的對應partition對應的數組中,這樣最終就把分片位置索引kvoffsets中要排序的record在partitionlndexes[][]中都重新建立了一遍新的索引和映射關系。
[0059]進一步地。如圖4所示,倉Ij建多個線程(如ThreadO至Thread3),對每個分片partition內部的record進行排序,即對partitionlndexes的第二維數組排序即可。
[0060]在本發明的一個實施例中,本地服務器510對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引通過一個線程進行排序。例如:使用partitionlndexes作為輸出到硬盤的索引,從第一維的O下標開始,代表partitionO,依次如果有數據則把在內存buffer中對應的keyvalue寫入硬盤即可。
[0061]結合圖5所示,本發明實施例的用于MapReduce的中間結果數據的排序系統500還包括:簡化服務器530。簡化服務器530用于從本地服務器510的本地磁盤中獲取排序后的N組中間數據結果,并對N組中間數據結果進行簡化任務處理。即對排序后存儲在本地硬盤中的中間結果數據進行化簡任務(Reduce Task)。
[0062]根據本發明實施例的用于MapReduce的中間結果數據的排序系統,緩解在map輸出過程中,由于記錄輸出速度大于spill排序速度,因而緩沖區buffer因為被填滿導致無法寫入被迫等待spill完成釋放內存所造成的延時。通過本發明實施例的用于MapReduce的中間結果數據的排序系統,利用分治思想把中間數據排序分成小份處理,同時基于partition的分組,簡化了比較邏輯,利用多線程進行排序,大大加快了排序速度,降低了寫入(spill)時間,從而緩解了在spill過程中buffer被寫滿而不得不等待spill完成帶來的延時。具體地,在spill時,待排序的所有record針對partition分組,對每一個partition內部使用單獨的線程排序,例如:使用hadoop自帶的wordcount對本發明實施例的排序方法進行測試,開啟三線程map平均加速30%左右。
[0063]在本說明書的描述中,參考術語“一個實施例”、“一些實施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特點包含于本發明的至少一個實施例或示例中。在本說明書中,對所述術語的示意性表述不一定指的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任何的一個或多個實施例或示例中以合適的方式結合。
[0064]盡管已經示出和描述了本發明的實施例,對于本領域的普通技術人員而言,可以理解在不脫離本發明的原理和精神的情況下可以對這些實施例進行多種變化、修改、替換和變型,本發明的范圍由所附權利要求及其等同限定。
【權利要求】
1.一種用于MapReduce的中間結果數據的排序方法,其特征在于,包括以下步驟: 從映射任務服務器獲取映射任務產生的多個中間結果數據; 根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組; 分別通過N個線程對所述N組內的中間結果數據進行排序;以及 將排序后的N組中間結果數據從內存中寫入本地磁盤。
2.根據權利要求1所述的用于MapReduce的中間結果數據的排序方法,其特征在于,還包括: 簡化任務服務器從所述本地磁盤中獲取排序后的N組中間數據結果,并對所述N組中間數據結果進行簡化任務處理。
3.根據權利要求1所述的用于MapReduce的中間結果數據的排序方法,其特征在于,所述根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組,進一步包括: 創建分片索引二維數組; 將多個所述中間結果數據所屬的分片合并后存儲在所述分片索引二維數組的第一維存儲空間中; 將每個分片位置索引存儲在所述分片索引二維數組的第二維存儲空間中; 根據所述第一維存儲空間存儲的多個分片對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引進行排.序。
4.根據權利要求3所述的用于MapReduce的中間結果數據的排序方法,其特征在于,對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引通過一個線程進行排序。
5.一種用于MapReduce的中間結果數據的排序系統,其特征在于,包括:本地服務器和映射服務器,其中, 所述映射服務器用于執行映射任務以生成多個中間結果數據; 所述本地服務器用于從所述映射任務服務器獲取所述多個中間結果數據,并根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組,并分別通過N個線程對所述N組內的中間結果數據進行排序,以及將排序后的N組中間結果數據從內存中寫入本地磁盤。
6.根據權利要求1所述的用于MapReduce的中間結果數據的排序系統,其特征在于,還包括: 簡化服務器,所述簡化服務器用于從所述本地服務器的本地磁盤中獲取排序后的N組中間數據結果,并對所述N組中間數據結果進行簡化任務處理。
7.根據權利要求5所述的用于MapReduce的中間結果數據的排序系統,其特征在于,所述本地服務器根據多個所述中間結果數據所屬的分片將多個所述中間結果數據分為N組,包括:創建分片索引二維數組,將多個所述中間結果數據所屬的分片合并后存儲在所述分片索引二維數組的第一維存儲空間中,并將每個分片位置索引存儲在所述分片索引二維數組的第二維存儲空間中,以及根據所述第一維存儲空間存儲的多個分片對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引進行排序。
8.根據權利要求7所述的用于MapReduce的中間結果數據的排序系統,其特征在于,所述本地服務器對存儲在第二維存儲空間中的每個分片對應的多個分片位置索引是通過一個獨立的線程 進行排序的。
【文檔編號】G06F17/30GK103440246SQ201310305931
【公開日】2013年12月11日 申請日期:2013年7月19日 優先權日:2013年7月19日
【發明者】王猛, 楊毅, 王謙 申請人:百度在線網絡技術(北京)有限公司