本發明實施例涉及計算機技術領域,尤其涉及一種基于MapReduce模型的任務執行方法和裝置。
背景技術:
MapReduce模型是當下并行處理技術中的主流編程模型,其將任務抽象為基于鍵值對的map任務和Reduce任務。圖1為現有技術基于MapReduce模型的任務執行方法。如圖1所示,現有技術中基于MapReduce模型的任務執行方法主要分為以下幾個步驟:步驟101,將任務的輸入文件劃分為M份。步驟102,執行Map任務的節點讀取相應的分區塊,并從輸入文件的數據記錄中提取出鍵值對,傳入map函數,map函數對這些鍵值對進行處理,產生的中間鍵值存入緩存或者本地磁盤。步驟103,選擇哈希函數作用于中間鍵,并產生0~R-1個桶編號。根據哈希結果將Map任務的結果存放到R個本地文件中的一個。步驟104,執行Reduce任務的節點遠程地讀取R個文件中相應的一個,采用取模的方式,將鍵值與關聯的值傳遞給reduce函數,reduce函數產生的輸出會添加到這個分區的輸出文件中。
現有技術中的MapReduce模型的任務執行方法中,由于Map任務執行完生成鍵值對,將鍵值對發送給reduce任務的節點時,遵循相同的鍵值被發送至同一個reduce節點的原則。因此,在key取值不均的情況下,容易造成reduce任務中節點的負載不均衡的問題,這種不均衡會造成輕負載的reduce節點等待重負載的reduce節點的現象,任務重的reduce節點將會拖慢整體的執行效率。
所以現有的基于MapReduce模型的任務執行方法導致了reduce節點上的負載不均衡,進而導致了任務的執行效率較低。
技術實現要素:
本發明實施例提供一種基于MapReduce模型的任務執行方法,該方法解決了現有的基于MapReduce模型的任務執行方法導致reduce節點上的負載不均衡,進而導致任務的執行效率較低的技術問題。
本發明實施例提供一種基于MapReduce模型的任務執行方法,包括:
提取待執行任務的每個輸入文件的鍵值對;
采用最大差異直方圖將所述鍵值對劃分為多個分割集合;
采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系;
根據所述映射關系執行待執行任務。
本發明實施例提供一種基于MapReduce模型的任務執行裝置,包括:
提取模塊,用于提取待執行任務的每個輸入文件的鍵值對;
第一劃分模塊,用于采用最大差異直方圖將所述鍵值對劃分為多個分割集合;
計算模塊,用于采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系;
執行模塊,用于根據所述映射關系執行待執行任務。
本發明實施例提供一種基于MapReduce模型的任務執行方法和裝置,通過提取待執行任務的每個輸入文件的鍵值對;采用最大差異直方圖將鍵值對劃分為多個分割集合;采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系;根據映射關系執行待執行任務。由于首先采用最大差異直方圖將鍵值對劃分為多個分割集合,使每個分割集合中的鍵值對中key的頻率取值差異不大,而分割集合間的鍵值對中key的頻率取值差異很大,將每個分割集合中的鍵值對分配到各個reduce節點時,能夠保證分配給每個reduce節點上的任務量大致相同。并且計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系時,采用哈希一致性算法,所以能夠把每個分割集合中的鍵值對中的鍵值均衡地分配給各reduce節點,所以實現了reduce節點上的負載均衡,提高了任務的執行效率。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為現有技術基于MapReduce模型的任務執行方法流程圖;
圖2為本發明基于MapReduce模型的任務執行方法實施例一的流程圖;
圖3為本發明基于MapReduce模型的任務執行方法實施例二的流程圖;
圖4為本發明基于MapReduce模型的任務執行裝置實施例一的結構示意圖;
圖5為本發明基于MapReduce模型的任務執行裝置實施例二的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例?;诒景l明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
應當理解,本文中使用的術語“和/或”僅僅是一種描述關聯對象的關聯關系,表示可以存在三種關系,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。另外,本文中字符“/”,一般表示前后關聯對象是一種“或”的關系。
取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”或“響應于檢測”。類似地,取決于語境,短語“如果確定”或“如果檢測(陳述的條件或事件)”可以被解釋成為“當確定時”或“響應于確定”或“當檢測(陳述的條件或事件)時”或“響應于檢測(陳述的條件或事件)”。
圖2為本發明基于MapReduce模型的任務執行方法實施例一的流程圖,如圖2所示,則本實施例提供的基于MapReduce模型的任務執行方法的執行主體為基于MapReduce模型的任務執行裝置,該基于MapReduce模型的任務執行裝置可以集成或安裝在計算機或服務器中,則本實施例提供的基于MapReduce模型的任務執行方法包括以下幾個步驟。
步驟201,提取待執行任務的每個輸入文件的鍵值對。
其中,本實施例中,采用MapReduce模型中的Map任務提取待執行任務的每個輸入文件的鍵值對。
具體地,Map任務的節點讀取相應的輸入文件,并從輸入文件的文檔數據記錄中提取對應輸入文件的鍵值對。其中,鍵值對表示為(key,valve)。其中,key表示鍵值,valve表示該鍵值的頻率。
可以理解的是,map函數可以對提取出的鍵值對進行處理,產生中間鍵值對存入到緩存或本地磁盤中。
步驟202,采用最大差異直方圖將鍵值對劃分為多個分割集合。
本實施例中,待所有的鍵值對均提取完成后,采用最大差異直方圖將鍵值對劃分為多個分割集合。
其中,最大差異直方圖可以表示為:maxdiff直方圖。
具體地,本實施例中,采用最大差異直方圖將鍵值對劃分為多個分割集合,多個分割集合的個數為b個,每個分割集合可以稱之為桶,maxdiff直方圖的分桶原則是相鄰桶間的差異最大。則maxdiff直方圖的分桶步驟可以為以下幾個步驟。
首先依次統計每個鍵值的頻率value。
其次計算Δvi=valuei+1-valuei。
再次將Δvi按照降序排列,由高到低選取b-1個Δvi,并記錄相鄰數值d2i,d2i+1。
最后得到分割集合D={d1,d2,...,db}。
其中,d1和db分別為有序關鍵字列表的表頭和表位關鍵字,每個桶有兩個分割點,根據分割點求出每個桶內所有鍵值的頻率,從而得到最終的maxdiff直方圖。
舉例說明為:[{a,4},{c,5},{d,9},{f,12}]表示提取出的鍵值對,a,c,d,f鍵值對中的數值分別表示a,c,d,f出現的頻次。若maxdiff直方圖劃分的分割集合的個數b=2,則最后的劃分結果為[{a,4},{c,5}][{d,9},{f,12}],實現了每個分割集合內的key取值的頻率差異不大,而相鄰分割集合間的key取值的頻率差異很大。
步驟203,采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系。
具體地,計算每個分割集合中的鍵值對的鍵值與reduce節點的映射關系。其中,若某一鍵值對中鍵值的頻率值較大,則可建立該鍵值對對應的鍵值與多個reduce節點的映射關系。
其中,采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系時,可以為:首先對多個分割集合中的每個鍵值對進行哈希運算,生成每個鍵值對的鍵值對應的一個或多個哈希值;其次對每個reduce節點的地址進行哈希運算,生成每個reduce節點對應的哈希值;最后根據每個鍵值對的鍵值對應的每個哈希值和reduce節點對應的哈希值,建立每個鍵值對的鍵值和reduce節點的映射關系。
步驟204,根據映射關系執行待執行任務。
具體地,根據該映射關系,由相關的reduce節點執行任務,由于該映射關系能夠把各鍵值對中的鍵值均衡地分配給各reduce節點,所以,在執行任務時,各reduce節點執行任務的進度基本相同。
本實施例提供的基于MapReduce模型的任務執行方法,通過提取待執行任務的每個輸入文件的鍵值對;采用最大差異直方圖將鍵值對劃分為多個分割集合;采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系;根據映射關系執行待執行任務。由于首先采用最大差異直方圖將鍵值對劃分為多個分割集合,使每個分割集合中的鍵值對中key的頻率取值差異不大,而分割集合間的鍵值對中key的頻率取值差異很大,將每個分割集合中的鍵值對分配到各個reduce節點時,能夠保證分配給每個reduce節點上的任務量大致相同。并且計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系時,采用哈希一致性算法,所以能夠把每個分割集合中的鍵值對中的鍵值均衡地分配給各reduce節點,所以實現了reduce節點上的負載均衡,提高了任務的執行效率。
圖3為本發明基于MapReduce模型的任務執行方法實施例二的流程圖,如圖3所示,本實施例提供的基于MapReduce模型的任務執行方法,是在本發明基于MapReduce模型的任務執行方法實施例一的基礎上,對步驟201和步驟203的進一步細化,則本實施例提供的基于MapReduce模型的任務執行方法包括以下步驟。
步驟301,將待執行任務劃分為多個的輸入文件。
進一步地,本實施例中,采用Map任務中的Map節點將待執行任務劃分了為多個的輸入文件。其中,每個輸入文件的大小可以為16MB,或64MB或16~64MB中的一個數值。
步驟302,讀取輸入文件。
進一步地,本實施例中,將輸入文件存入到分布式文件系統中,所以從分布式文件系統中讀取輸入文件。
步驟303,提取待執行任務的每個輸入文件的鍵值對。
步驟304,采用最大差異直方圖將鍵值對劃分為多個分割集合。
本實施例中,步驟303-步驟304的實現方式與本發明基于MapReduce模型的任務執行方法實施例一中的步驟202-步驟203的實現方式相同,在此不再一一贅述。
步驟305,采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系。
進一步地,本實施例中,步驟305可分為以下幾個步驟進行。
首先,對多個分割集合中的每個鍵值對進行哈希運算,生成每個鍵值的鍵值對應的一個或多個哈希值。
具體地,鍵值對中第i個鍵值出現的頻次表示為fi,定義基準頻次表示為f0,對于鍵值對中的鍵值,通過對鍵值和對應的鍵值排序中的序號進行哈希運算,生成t=[fi/f0]>1個鍵值的哈希值,該t個鍵值的哈希值不會與其他鍵值對中的鍵值的哈希值相同。
其中,每個鍵值對的鍵值對應的哈希值的數量為t。
其中,鍵值的哈希值的數值為[0,2b-1]中的t個值。
然后,對每個reduce節點的地址進行哈希運算,生成每個reduce節點對應的哈希值。
進一步地,每個reduce節點的地址為每個reduce節點的IP地址或MAC地址。
需要說明的是,本實施例中,一個reduce節點對應的哈希值不會與其他reduce節點的哈希值相同。其中,reduce節點的哈希值的為[0,2b-1]中的一個值。其中,b為分割集合的數量。
最后,根據每個鍵值對的鍵值對應的每個哈希值和reduce節點對應的哈希值,建立每個鍵值對的鍵值和reduce節點的映射關系。
進一步地,根據每個鍵值對的鍵值對應的每個哈希值和reduce節點對應的哈希值,建立每個鍵值對的鍵值和reduce節點的映射關系,具體包括:
首先,獲取哈希值大于鍵值的哈希值的reduce節點。
然后,查找與鍵值的哈希值的差值最小的第一reduce節點。
其中,與鍵值的哈希值差值最小的reduce節點為第一reduce節點。
將鍵值對映射到第一reduce節點上。
具體地,鍵值的哈希值與第一reduce節點的哈希值相差對小,并且哈希值小于第一reduce節點,則該key值映射到第一reduce節點上。即由該reduce節點執行該鍵值對應的任務。
步驟306,根據映射關系執行待執行任務。
本實施例中,步驟306的實現方式與本發明基于MapReduce模型的任務執行方法實施例一中的步驟204的實現方式相同,在此不再一一贅述。
本實施例提供的基于MapReduce模型的任務執行方法,通過將待執行任務劃分為多個的輸入文件,讀取輸入文件,提取待執行任務的每個輸入文件的鍵值對,采用最大差異直方圖將鍵值對劃分為多個分割集合,采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系,根據映射關系執行待執行任務,實現了reduce節點上的負載均衡,提高了任務的執行效率。
本實施例提供的基于MapReduce模型的任務執行方法,在采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系時,對多個分割集合中的每個鍵值對進行哈希運算,生成每個鍵值對的鍵值對應的一個或多個哈希值;對每個reduce節點的地址進行哈希運算,生成每個reduce節點對應的哈希值;根據每個鍵值對的鍵值對應的每個哈希值和reduce節點對應的哈希值,建立每個鍵值對的鍵值和reduce節點的映射關系。在根據每個鍵值對的鍵值對應的每個哈希值和reduce節點對應的哈希值,建立每個鍵值對的鍵值和reduce節點的映射關系時,具體為:獲取哈希值大于鍵值的哈希值的reduce節點;查找與鍵值的哈希值的差值最小的第一reduce節點;將鍵值映射到第一reduce節點上。所以,在reduce節點發生故障或有新的reduce節點上線時,求得該reduce節點對應的哈希值后,只會影響到哈希值與該reduce節點相鄰的reduce節點的鍵值的分配,并不會影響到其他reduce節點的鍵值分配。所以,本實施例提供的基于MapReduce模型的任務執行方法能夠很好的適應reduce節點的故障和reduce節點上線,提高了執行任務的穩定性。
本領域普通技術人員可以理解:實現上述各方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成。前述的程序可以存儲于一可讀取存儲介質中。該程序在執行時,執行包括上述各方法實施例的步驟;而前述的存儲介質包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質。
圖4為本發明基于MapReduce模型的任務執行裝置實施例一的結構示意圖,如圖4所示,本實施例提供的基于MapReduce模型的任務執行裝置包括:提取模塊41,第一劃分模塊42,計算模塊43和執行模塊44。
其中,提取模塊41,用于提取待執行任務的每個輸入文件的鍵值對。第一劃分模塊42,用于采用最大差異直方圖將鍵值對劃分為多個分割集合。計算模塊43,用于采用哈希一致性算法計算多個分割集合中的鍵值對中的鍵值與reduce節點的映射關系。執行模塊44,用于根據映射關系執行待執行任務。
本實施例提供的基于MapReduce模型的任務執行裝置可以執行圖2所示方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
圖5為本發明基于MapReduce模型的任務執行裝置實施例二的結構示意圖,如圖5所示,本實施例提供的基于MapReduce模型的任務執行裝置在本發明基于MapReduce模型的任務執行裝置實施例一的基礎上,進一步地,還包括:第二劃分模塊51和讀取模塊52。
進一步地,第二劃分模塊51,用于將待執行任務劃分為多個的輸入文件。讀取模塊52,用于讀取輸入文件。
進一步地,計算模塊43,具體包括:哈希運算子模塊43a和建立子模塊43b。
其中,哈希運算子模塊43a,用于對多個分割集合中的每個鍵值對進行哈希運算,生成每個鍵值對的鍵值對應的一個或多個哈希值;對每個reduce節點的地址進行哈希運算,生成每個reduce節點對應的哈希值。建立子模塊43b,用于根據每個鍵值對的鍵值對應的每個哈希值和reduce節點對應的哈希值,建立每個鍵值對的鍵值和reduce節點的映射關系。
其中,每個reduce節點的地址為每個reduce節點的IP地址或MAC地址。
進一步地,建立子模塊43b,具體用于:獲取哈希值大于鍵值的哈希值的reduce節點;查找與鍵值的哈希值的差值最小的第一reduce節點;將鍵值映射到第一reduce節點上。
本實施例提供的基于MapReduce模型的任務執行裝置可以執行圖3所示方法實施例的技術方案,其實現原理和技術效果類似,此處不再贅述。
最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。