基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法和裝置,該方法包括:接收?qǐng)D處理作業(yè)的輸入文件;利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和所述圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布;根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。本發(fā)明實(shí)施例的方法能夠?qū)崿F(xiàn)均衡Map任務(wù)和Reduce任務(wù)的計(jì)算負(fù)載,從而高效地完成圖處理作業(yè)。
【專利說明】基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及圖處理,更具體地,涉及一種基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法和裝置。
【背景技術(shù)】
[0002]MapReduce是Google公司提出的一種用于大規(guī)模并行編程的軟件架構(gòu)。用于大規(guī)模數(shù)據(jù)集(大于1TB)上的并行運(yùn)算。概念“Map (映射)”和“Reduce (化簡)”及其主要思想,都是從函數(shù)式編程語言借來的。當(dāng)前的MapReduce中間件實(shí)現(xiàn)要求應(yīng)用開發(fā)者指定一個(gè)Map (映射)函數(shù),用來把一組鍵值對(duì)映射成一些新的鍵值對(duì)(key-value pair),稱作中間鍵值對(duì);此外還要求應(yīng)用開發(fā)者指定一個(gè)Reduce (化簡)函數(shù),用來對(duì)Map函數(shù)輸出的中間鍵值對(duì)進(jìn)行進(jìn)一步處理。MapReduce架構(gòu)多用于大規(guī)模數(shù)據(jù)集(大于1TB)的并行運(yùn)算,并通過把對(duì)數(shù)據(jù)集的大規(guī)模操作分發(fā)給網(wǎng)絡(luò)上的多個(gè)節(jié)點(diǎn)進(jìn)行并行運(yùn)算來實(shí)現(xiàn)伸縮性。在web訪問日志分析、文檔聚類、機(jī)器學(xué)習(xí)、數(shù)據(jù)統(tǒng)計(jì)、基于統(tǒng)計(jì)的機(jī)器翻譯等領(lǐng)域有廣泛的應(yīng)用。例如,Hadoop就是一種MapReduce的實(shí)現(xiàn)。越來越多的云計(jì)算服務(wù)商在云計(jì)算系統(tǒng)中部署了 MapReduce架構(gòu)。
[0003]圖處理是大規(guī)模數(shù)據(jù)處理問題中的一類重要問題。在社交化網(wǎng)絡(luò)中對(duì)各種實(shí)體關(guān)系的分析和數(shù)據(jù)挖掘中,以及各種優(yōu)化求解問題中,就涉及到大量的圖處理算法。圖處理算法的MapReduce實(shí)現(xiàn)通常由多個(gè)迭代構(gòu)成,而每個(gè)迭代則由多級(jí)Map任務(wù)和Reduce任務(wù)組成。圖處理算法一般需要經(jīng)過多次迭代,最后收斂形成一個(gè)穩(wěn)定的解。
[0004]在現(xiàn)有的圖處理問題中,輸入數(shù)據(jù)集的規(guī)模非常大,難以在單個(gè)節(jié)點(diǎn)上完成運(yùn)算。因此在基于MapReduce圖算法的實(shí)現(xiàn)中,需要將由多個(gè)節(jié)點(diǎn)組成的大圖分割為多個(gè)子圖?;趫D中節(jié)點(diǎn)和邊分布的不均衡性,每個(gè)子圖的基于Map任務(wù)或者Reduce任務(wù)的計(jì)算負(fù)載也是不均衡的,其根本原因是其計(jì)算復(fù)雜度和所用數(shù)據(jù)結(jié)構(gòu)(例如鄰接表)的存儲(chǔ)復(fù)雜度成線性關(guān)系。通常的劃分標(biāo)準(zhǔn)是按固定的數(shù)據(jù)大小對(duì)輸入的圖處理作業(yè)的數(shù)據(jù)集進(jìn)行切分。因此,在當(dāng)前的圖算法的MapReduce實(shí)現(xiàn)中,常常會(huì)出現(xiàn)“長尾”現(xiàn)象,某些子計(jì)算任務(wù)(Map任務(wù)或者Reduce任務(wù))的運(yùn)行時(shí)間特別長,而其它已經(jīng)完成的子任務(wù)必須等待所有的子任務(wù)完成才能進(jìn)行下一個(gè)迭代的運(yùn)算。造成這種現(xiàn)象的本質(zhì)是因?yàn)閳D處理算法的計(jì)算復(fù)雜度和數(shù)據(jù)長度不一定成線性關(guān)系,例如是O (η2),O (η3)的關(guān)系。
[0005]因此需要一種均衡Map任務(wù)和Reduce任務(wù)的計(jì)算負(fù)載的圖處理的方法。
【發(fā)明內(nèi)容】
[0006]為解決以上問題,本發(fā)明提供了基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法和裝置。
[0007]根據(jù)本發(fā)明的一個(gè)方面,提供了基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法,包括:接收提交的圖處理作業(yè)的數(shù)據(jù)集;利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布;根據(jù)預(yù)測的MapReduce任務(wù)執(zhí)行時(shí)間分布將圖處理作業(yè)的數(shù)據(jù)集切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
[0008]根據(jù)本發(fā)明的另一個(gè)方面,提供了基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的裝置,包括:接收模塊,被配置為接收提交的圖處理作業(yè)的數(shù)據(jù)集;預(yù)測模塊,被配置為利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布;切分模塊,被配置為根據(jù)預(yù)測的MapReduce任務(wù)執(zhí)行時(shí)間分布將圖處理作業(yè)的數(shù)據(jù)集切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
[0009]根據(jù)本發(fā)明實(shí)施例的基于MapReduce實(shí)現(xiàn)圖處理的方法和裝置,能夠?qū)崿F(xiàn)均衡Map任務(wù)和Reduce任務(wù)的計(jì)算負(fù)載,從而高效地完成圖處理作業(yè)。
【專利附圖】
【附圖說明】
[0010]通過結(jié)合附圖對(duì)本公開示例性實(shí)施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實(shí)施方式中,相同的參考標(biāo)號(hào)通常代表相同部件。
[0011]圖1示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。
[0012]圖2示出了現(xiàn)有的MapReduce架構(gòu)的示意圖。
[0013]圖3示出根據(jù)本發(fā)明的實(shí)施例基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法。
[0014]圖4不出根據(jù)執(zhí)行時(shí)間分布將圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片的流程。
[0015]圖5示出本發(fā)明基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理作業(yè)的一個(gè)實(shí)施例。
[0016]圖6示出根據(jù)本發(fā)明實(shí)施例的圖處理作業(yè)的輸入文件中的鍵值對(duì)。
[0017]圖7示出根據(jù)本發(fā)明的實(shí)施例為每個(gè)節(jié)點(diǎn)的鍵值對(duì)生成新鍵值對(duì)的示例。
[0018]圖8示出根據(jù)本發(fā)明的實(shí)施例對(duì)新鍵值對(duì)重新排序后的示例。
[0019]圖9示出根據(jù)本發(fā)明實(shí)施例的Reduce任務(wù)的執(zhí)行時(shí)間和度數(shù)的關(guān)系分布曲線。
[0020]圖10示出根據(jù)本發(fā)明實(shí)施例的圖處理作業(yè)的度數(shù)分布曲線。
[0021]圖11所示的根據(jù)本發(fā)明實(shí)施例的Reduce任務(wù)處理該圖處理作業(yè)的執(zhí)行時(shí)間分布預(yù)測。
[0022]圖12示出根據(jù)本發(fā)明實(shí)施例的Map任務(wù)的執(zhí)行時(shí)間和度數(shù)的關(guān)系分布曲線。
[0023]圖13示出根據(jù)本發(fā)明實(shí)施例的Map任務(wù)處理該圖處理作業(yè)的執(zhí)行時(shí)間分布預(yù)測。
[0024]圖14示出根據(jù)本發(fā)明的實(shí)施例基于MapReduce實(shí)現(xiàn)圖處理的裝置1400。
【具體實(shí)施方式】
[0025]下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實(shí)施方式。雖然附圖中顯示了本公開的優(yōu)選實(shí)施方式,然而應(yīng)該理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施方式所限制。相反,提供這些實(shí)施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0026]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0027]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0028]計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號(hào),其中承載了計(jì)算機(jī)可讀的程序代碼。這種傳播的數(shù)據(jù)信號(hào)可以采用多種形式,包括——但不限于——電磁信號(hào)、光信號(hào)或上述的任意合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)還可以是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)以外的任何計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序。
[0029]計(jì)算機(jī)可讀介質(zhì)上包含的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,包括一但不限于一無線、電線、光纜、RF等等,或者上述的任意合適的組合。
[0030]可以以一種或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如”C”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
[0031]下面將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
[0032]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
[0033]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。[0034]圖1示出了適于用來實(shí)現(xiàn)本發(fā)明實(shí)施方式的示例性計(jì)算機(jī)系統(tǒng)/服務(wù)器12的框圖。圖1顯示的計(jì)算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個(gè)示例,不應(yīng)對(duì)本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。
[0035]如圖1所示,計(jì)算機(jī)系統(tǒng)/服務(wù)器12以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器12的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元16,系統(tǒng)存儲(chǔ)器28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器28和處理單元16)的總線18。
[0036]總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
[0037]計(jì)算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是任何能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
[0038]系統(tǒng)存儲(chǔ)器28可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)30和/或高速緩存存儲(chǔ)器32。計(jì)算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)34可以用于讀寫不可移動(dòng)的、非易失性磁介質(zhì)(圖1未顯示,通常稱為“硬盤驅(qū)動(dòng)器”)。盡管圖1中未示出,可以提供用于對(duì)可移動(dòng)非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動(dòng)器,以及對(duì)可移動(dòng)非易失性光盤(例如⑶-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線18相連。存儲(chǔ)器28可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
[0039]具有一組(至少一個(gè))程序模塊42的程序/實(shí)用工具40,可以存儲(chǔ)在例如存儲(chǔ)器28中,這樣的程序模塊42包括——但不限于——操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊42通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
[0040]計(jì)算機(jī)系統(tǒng)/服務(wù)器12也可以與一個(gè)或多個(gè)外部設(shè)備14 (例如鍵盤、指向設(shè)備、顯示器24等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器12交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器12能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口 22進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器12還可以通過網(wǎng)絡(luò)適配器20與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器20通過總線18與計(jì)算機(jī)系統(tǒng)/服務(wù)器12的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,可以結(jié)合計(jì)算機(jī)系統(tǒng)/服務(wù)器12使用其它硬件和/或軟件模塊,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
[0041]圖2示出了現(xiàn)有的MapReduce架構(gòu)的示意圖,其中,作業(yè)調(diào)度器(Job Tracker)和多個(gè)任務(wù)服務(wù)器(Task Tracker)是該MapReduce架構(gòu)中最基本的兩個(gè)服務(wù)。通常,作業(yè)調(diào)度器部署在主節(jié)點(diǎn)上,接收用戶所提交的作業(yè),統(tǒng)一調(diào)度所有的作業(yè),管理所有的任務(wù)服務(wù)器,將用戶提交的每一個(gè)作業(yè)拆分成多個(gè)任務(wù),包括Map任務(wù)和Reduce任務(wù)等,并負(fù)責(zé)將任務(wù)分配給相應(yīng)的任務(wù)服務(wù)器。任務(wù)作為具體執(zhí)行的基本單元,需要被分配到合適的任務(wù)服務(wù)器上執(zhí)行。多個(gè)任務(wù)服務(wù)器輪詢作業(yè)調(diào)度器,以獲得任務(wù)。被分配執(zhí)行Map任務(wù)的任務(wù)服務(wù)器是Map任務(wù)服務(wù)器,被分配執(zhí)行Reduce任務(wù)的任務(wù)服務(wù)器是Reduce任務(wù)服務(wù)器。任務(wù)服務(wù)器一邊執(zhí)行一邊向作業(yè)調(diào)度器匯報(bào)各個(gè)任務(wù)的狀態(tài),以此幫助作業(yè)調(diào)度器了解任務(wù)執(zhí)行的整體情況。
[0042]具體地,輸入文件被上傳到在數(shù)據(jù)中心上部署的分布式文件系統(tǒng),并根據(jù)分割規(guī)則而分成M個(gè)輸入數(shù)據(jù)分片,每個(gè)片的大小一般在64MB到512MB范圍內(nèi),具體可通過配置文件指定。執(zhí)行任務(wù)所需的程序文件也被上傳到分布式文件系統(tǒng),包括任務(wù)配置文件(包括Map函數(shù)、合并函數(shù)、Reduce函數(shù)等)等。當(dāng)作業(yè)調(diào)度器接收到來自客戶端程序的任務(wù)請(qǐng)求后,將任務(wù)分解為多個(gè)任務(wù),包括M個(gè)Map任務(wù)和R個(gè)Reduce任務(wù),并負(fù)責(zé)將Map任務(wù)或Reduce任務(wù)分配給空閑的任務(wù)服務(wù)器。
[0043]然后,Map任務(wù)服務(wù)器根據(jù)所分配的任務(wù),讀取相應(yīng)的輸入數(shù)據(jù)分片,并從中分析出輸入鍵值對(duì)(key-value pair)。接著,Map任務(wù)服務(wù)器調(diào)用Map函數(shù)map O以將輸入鍵值對(duì)映射成中間鍵值對(duì),Map函數(shù)所產(chǎn)生的中間鍵值對(duì)被緩存在內(nèi)存中。緩存的中間鍵值對(duì)通過調(diào)用合并函數(shù)而對(duì)每個(gè)鍵值名(key)聚集該鍵值名的所有值,并通過調(diào)用分割函數(shù)而被分割成R片,然后被周期性地寫入本地磁盤的R個(gè)區(qū)域中。當(dāng)Map任務(wù)完成后,Map任務(wù)服務(wù)器向作業(yè)調(diào)度器通知任務(wù)完成以及中間鍵值對(duì)在本地磁盤上的位置信息。
[0044]當(dāng)Reduce任務(wù)服務(wù)器從作業(yè)調(diào)度器獲得Reduce任務(wù)后,根據(jù)位置信息從一個(gè)或多個(gè)Map任務(wù)服務(wù)器的本地磁盤上讀取中間鍵值對(duì),然后根據(jù)鍵值名對(duì)中間鍵值對(duì)進(jìn)行排序,將相同鍵值名的值聚合在一起。Reduce任務(wù)服務(wù)器調(diào)用Reduce函數(shù)reduce O ,對(duì)這些中間鍵值對(duì)進(jìn)行化簡,并將Reduce函數(shù)的輸出添加到該Reduce任務(wù)服務(wù)器的最終輸出文件中。
[0045]根據(jù)本發(fā)明實(shí)施例的基于MapReduce實(shí)現(xiàn)圖處理的方法,改變了現(xiàn)有的MapReduce架構(gòu)中將輸入文件分為固定大小的輸入數(shù)據(jù)分片的分割規(guī)則,根據(jù)預(yù)測的圖處理作業(yè)的執(zhí)行時(shí)間分布將圖處理作業(yè)的輸入文件切分為任務(wù)的輸入數(shù)據(jù)分片。
[0046]圖3示出根據(jù)本發(fā)明的實(shí)施例基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法,該方法包括:在步驟S301,接收?qǐng)D處理作業(yè)的輸入文件;在步驟S302,利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和所述圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布;在步驟S303,根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
[0047]在步驟S301,接收?qǐng)D處理作業(yè)的輸入文件,圖處理作業(yè)的輸入文件包括圖處理作業(yè)的多個(gè)節(jié)點(diǎn)以及多個(gè)節(jié)點(diǎn)的相鄰節(jié)點(diǎn)的信息,其中每個(gè)節(jié)點(diǎn)由唯一的標(biāo)識(shí)ID進(jìn)行標(biāo)識(shí),圖處理作業(yè)的輸入文件是以對(duì)應(yīng)于每個(gè)節(jié)點(diǎn)的鍵值對(duì)(key-value pair)進(jìn)行組織的數(shù)據(jù)集,每一個(gè)鍵值對(duì)由鍵值名(key)和對(duì)應(yīng)于該鍵值名的值(value)組成,其中鍵值名(key)為該鍵值對(duì)的唯一標(biāo)識(shí)ID。
[0048]在步驟S302,利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系和所述圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布表征Map任務(wù)或Reduce任務(wù)在執(zhí)行不同度數(shù)的節(jié)點(diǎn)的執(zhí)行時(shí)間,該分布的橫坐標(biāo)是度數(shù),在此度數(shù)(degree)表示與某個(gè)節(jié)點(diǎn)相鄰的節(jié)點(diǎn)的個(gè)數(shù),縱坐標(biāo)是任務(wù)的執(zhí)行時(shí)間。根據(jù)本發(fā)明的一個(gè)實(shí)施例,任務(wù)的度數(shù)和執(zhí)行時(shí)間的關(guān)系分布可以從該任務(wù)處理的歷史記錄中獲取,根據(jù)本發(fā)明的另一個(gè)實(shí)施例,任務(wù)的度數(shù)和執(zhí)行時(shí)間的關(guān)系分布可以從該任務(wù)的算法復(fù)雜度中獲取。獲取的任務(wù)的度數(shù)和執(zhí)行時(shí)間的關(guān)系分布預(yù)先存儲(chǔ)在數(shù)據(jù)字典中。圖處理作業(yè)的度數(shù)分布可以從該圖處理作業(yè)的歷史記錄中獲取,對(duì)于首次處理的圖處理作業(yè),通過對(duì)圖處理作業(yè)進(jìn)行預(yù)處理獲得圖處理作業(yè)的度數(shù)分布,并將圖處理作業(yè)的度數(shù)分布存儲(chǔ)在數(shù)據(jù)字典中,在預(yù)測圖處理作業(yè)中節(jié)點(diǎn)的執(zhí)行時(shí)間分布時(shí),從數(shù)據(jù)字典中獲取任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系和圖處理作業(yè)的度數(shù)分布。
[0049]在步驟S303,根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片,圖4不出根據(jù)執(zhí)行時(shí)間分布將圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片的流程,在步驟S401,檢測圖處理作業(yè)的輸入文件中對(duì)應(yīng)于節(jié)點(diǎn)的鍵值對(duì)是否以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造,例如可以在輸入文件的數(shù)據(jù)集中添加標(biāo)簽表明對(duì)應(yīng)于節(jié)點(diǎn)的鍵值對(duì)是以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造的;響應(yīng)于檢測結(jié)果為是,則在步驟S402,按照度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)排序;在步驟S403,根據(jù)預(yù)測的執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為任務(wù)的輸入數(shù)據(jù)分片;響應(yīng)于檢測結(jié)果為否,則在步驟S404,需要對(duì)圖處理作業(yè)的輸入文件進(jìn)行預(yù)處理,用節(jié)點(diǎn)的度數(shù)構(gòu)造圖處理作業(yè)中對(duì)應(yīng)于節(jié)點(diǎn)的鍵值對(duì),具體地,用節(jié)點(diǎn)的度數(shù)構(gòu)造圖處理作業(yè)中對(duì)應(yīng)于節(jié)點(diǎn)的鍵值對(duì)的鍵值名;然后再進(jìn)行步驟S402和S403的處理,流程結(jié)束。
[0050]根據(jù)本發(fā)明的一個(gè)實(shí)施例,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,利用Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的Map任務(wù)執(zhí)行時(shí)間分布,根據(jù)預(yù)測的Map任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為輸入數(shù)據(jù)分片,由作業(yè)調(diào)度器(Job tracker)將切分好的輸入數(shù)據(jù)分片指派給Map任務(wù)服務(wù)器執(zhí)行。
[0051]根據(jù)本發(fā)明的一個(gè)實(shí)施例,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,利用Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的Reduce任務(wù)執(zhí)行時(shí)間分布,根據(jù)預(yù)測的Reduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為輸入數(shù)據(jù)分片并輸入到Reduce任務(wù)的分區(qū)器(partitioner);由分區(qū)器向Reduce任務(wù)分配輸入數(shù)據(jù)分片;由作業(yè)調(diào)度器將輸入數(shù)據(jù)分片指派給Reduce任務(wù)服務(wù)器執(zhí)行。
[0052]圖5示出本發(fā)明基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理作業(yè)的一個(gè)實(shí)施例,該圖處理作業(yè)包括6個(gè)節(jié)點(diǎn),輸入的圖處理作業(yè)的輸入文件包括對(duì)應(yīng)于每個(gè)節(jié)點(diǎn)的鍵值對(duì)(key-valuepair),圖6示出根據(jù)本發(fā)明實(shí)施例的圖處理作業(yè)的輸入文件中的鍵值對(duì),其中key為每個(gè)節(jié)點(diǎn)的標(biāo)識(shí)ID,value為該圖節(jié)點(diǎn)的相鄰節(jié)點(diǎn)的標(biāo)識(shí)ID。
[0053]第一步,Map任務(wù)服務(wù)器檢測圖處理作業(yè)的輸入文件中對(duì)應(yīng)于每個(gè)節(jié)點(diǎn)的鍵值對(duì)是否以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造,具體地,檢測鍵值對(duì)的鍵值名是否以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造,例如,可以通過檢測圖處理作業(yè)的輸入文件中是否添加標(biāo)簽來表示,如果檢測到對(duì)應(yīng)于每個(gè)節(jié)點(diǎn)的鍵值對(duì)未以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造,則為每個(gè)節(jié)點(diǎn)的鍵值對(duì)生成新鍵值名,新鍵值名的格式為“相鄰節(jié)點(diǎn)個(gè)數(shù)_原始鍵值名”,圖7示出根據(jù)本發(fā)明的實(shí)施例為每個(gè)節(jié)點(diǎn)的鍵值對(duì)生成新鍵值對(duì)的示例。
[0054]第二步,依賴MapReduce架構(gòu)自身的分布式排序機(jī)制對(duì)新鍵值對(duì)進(jìn)行排序,根據(jù)本發(fā)明的實(shí)施例,可以按照當(dāng)前節(jié)點(diǎn)的度數(shù)對(duì)新鍵值對(duì)進(jìn)行排序,圖8示出根據(jù)本發(fā)明的實(shí)施例對(duì)新鍵值對(duì)重新排序后的示例。
[0055]第三步,任務(wù)服務(wù)器根據(jù)從數(shù)據(jù)庫中獲得的Reduce執(zhí)行時(shí)間和度數(shù)的關(guān)系分布曲線(Reduce predictive equation)和圖處理作業(yè)的度數(shù)分布曲線(degreedistribution)來做負(fù)載均衡的分區(qū)(partition),圖9示出根據(jù)本發(fā)明實(shí)施例的Reduce任務(wù)的執(zhí)行時(shí)間和度數(shù)的關(guān)系分布曲線,我們假設(shè)從之前的任務(wù)中得到Reduce任務(wù)的執(zhí)行時(shí)間和度數(shù)是0(n2)的關(guān)系,并存儲(chǔ)于數(shù)據(jù)字典中。圖10示出根據(jù)本發(fā)明實(shí)施例的圖處理作業(yè)的度數(shù)分布曲線,我們假設(shè)該圖處理作業(yè)的度數(shù)分布由之前的任務(wù)獲得,存放于數(shù)據(jù)字典中。
[0056]根據(jù)圖9和圖10,能夠得到圖11所示的根據(jù)本發(fā)明實(shí)施例的Reduce任務(wù)處理該圖處理作業(yè)的執(zhí)行時(shí)間分布預(yù)測。假設(shè)有兩個(gè)Reduce任務(wù),根據(jù)預(yù)測的執(zhí)行時(shí)間分布,得知Reduce任務(wù)處理新鍵值對(duì)“4_3 I, 2,4,5”的執(zhí)行時(shí)間是16個(gè)時(shí)間單位,處理新鍵值對(duì)“3_1 2,3,5”的執(zhí)行時(shí)間是9個(gè)時(shí)間單位,處理新鍵值對(duì)“3_2 I, 3,5”的執(zhí)行時(shí)間是9個(gè)時(shí)間單位,處理新鍵值對(duì)“3_51,2,3”的執(zhí)行時(shí)間是9個(gè)時(shí)間單位,處理新鍵值對(duì)“2_4 3,6”的執(zhí)行時(shí)間是4個(gè)時(shí)間單位,處理新鍵值對(duì)“ 1_6 4 ”的執(zhí)行時(shí)間是I個(gè)時(shí)間單位,Reduce任務(wù)總共的執(zhí)行時(shí)間是48個(gè)時(shí)間單位,對(duì)圖6排序后的新鍵值對(duì)進(jìn)行切分,得到Reduce任務(wù)的切分結(jié)果:將第一、二個(gè)新鍵值對(duì)“4_3 1,2,4,5”和“3_12,3,5”分配給Reduce I處理,將第三、四、五、六個(gè)新鍵值對(duì)“3_2 1,3,5”、“3_5 1,2,3”、“2_4 3,6”和“1_6 4”分配給Reduce 2處理,以此達(dá)到Reduce任務(wù)負(fù)載均衡的目的。如果沒有本發(fā)明實(shí)施例的機(jī)制,第一至第三個(gè)鍵值對(duì)都會(huì)分配給Reduce 1,從而造成負(fù)載不均衡,導(dǎo)致性能降低。
[0057]從第二個(gè)MapReduce任務(wù)開始,所有節(jié)點(diǎn)的鍵值對(duì)已經(jīng)是按照度數(shù)排序,因此對(duì)于Map任務(wù)而言,按上述第三步同樣的方法,根據(jù)Map任務(wù)的執(zhí)行時(shí)間和度數(shù)關(guān)系分布曲線和圖處理作業(yè)的度數(shù)分布曲線來預(yù)測Map任務(wù)處理該圖處理作業(yè)的執(zhí)行時(shí)間分布。圖12示出根據(jù)本發(fā)明實(shí)施例的Map任務(wù)的執(zhí)行時(shí)間和度數(shù)的關(guān)系分布曲線,這里假設(shè)Map算法是0(N3)的,圖處理作業(yè)的度數(shù)分布曲線在處理過程中沒有發(fā)生變化,如圖9所示,根據(jù)圖9和圖12,能夠得到圖13所示的根據(jù)本發(fā)明實(shí)施例的Map任務(wù)處理該圖處理作業(yè)的執(zhí)行時(shí)間分布預(yù)測。假設(shè)有兩個(gè)Map任務(wù),分別為Mapl和Map2,根據(jù)預(yù)測的執(zhí)行時(shí)間分布,得知Map任務(wù)處理新鍵值對(duì)“4_31,2,4,5”的執(zhí)行時(shí)間是64個(gè)時(shí)間單位,處理新鍵值對(duì)“3 j2,3,5”的執(zhí)行時(shí)間是27個(gè)時(shí)間單位,處理新鍵值對(duì)“3_2 I, 3,5”的執(zhí)行時(shí)間是27個(gè)時(shí)間單位,處理新鍵值對(duì)“3_5 I, 2,3”的執(zhí)行時(shí)間是27個(gè)時(shí)間單位,處理新鍵值對(duì)“2_43,6”的執(zhí)行時(shí)間是8個(gè)時(shí)間單位,處理新鍵值對(duì)“1_6 4”的執(zhí)行時(shí)間是I個(gè)時(shí)間單位,Map任務(wù)總共的執(zhí)行時(shí)間是127個(gè)時(shí)間單位,對(duì)圖6排序后的新鍵值對(duì)進(jìn)行切分,得到Map任務(wù)的切分結(jié)果:將第一新鍵值對(duì)“4_3 1,2,4,5”分配給Map I處理,將第二、三、四、五、六新鍵值對(duì)“3_1 2,3,5” “3_21,3,5”、“3_5 1,2,3”、“2_4 3,6”和“1_6 4”分配給 Map 2 處理,以此達(dá)到Map任務(wù)負(fù)載均衡的目的。
[0058]對(duì)于某些圖迭代算法,當(dāng)多輪迭代過程中圖的拓?fù)浣Y(jié)構(gòu)發(fā)生了變化,則固定周期需要重新采集圖處理作業(yè)的度數(shù)分布。由于每輪圖處理作業(yè)的MapReduce任務(wù)處理都會(huì)由MapReduce的內(nèi)置框架對(duì)基于度數(shù)的鍵排序,因此拓?fù)浣Y(jié)構(gòu)的變化不會(huì)影響切分的精度。
[0059]基于同一發(fā)明構(gòu)思,本發(fā)明還提出一個(gè)基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的裝置,圖14示出根據(jù)本發(fā)明一個(gè)實(shí)施例的基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的裝置1400,該裝置包括:接收模塊1401,被配置為接收提交的圖處理作業(yè)的輸入文件;預(yù)測模塊1402,被配置為被配置為利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和所述圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布;切分模塊1403,被配置為根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
[0060]根據(jù)本發(fā)明的實(shí)施例,其中切分模塊包括:檢測模塊,被配置為檢測圖處理作業(yè)的輸入文件中節(jié)點(diǎn)的鍵值對(duì)是否以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造;排序模塊,被配置為響應(yīng)于檢測結(jié)果為是,則按照度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)排序;切分模塊被配置為根據(jù)預(yù)測的任務(wù)執(zhí)行時(shí)間分布將排序的鍵值對(duì)切分為任務(wù)的輸入數(shù)據(jù)分片。
[0061]根據(jù)本發(fā)明的實(shí)施例,其中切分模塊還包括:鍵值對(duì)構(gòu)造模塊,被配置為響應(yīng)于檢測結(jié)果為否,用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)進(jìn)行構(gòu)造,具體地,用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)的鍵值名進(jìn)行構(gòu)造;排序模塊被配置為按照度數(shù)對(duì)構(gòu)造后的鍵值對(duì)排序;切分模塊被配置為根據(jù)預(yù)測的任務(wù)執(zhí)行時(shí)間分布將排序的鍵值對(duì)切分為任務(wù)的輸入數(shù)據(jù)分片。
[0062]根據(jù)本發(fā)明的實(shí)施例,其中任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系是Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,預(yù)測模塊被配置為利用Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的Map任務(wù)執(zhí)行時(shí)間分布。
[0063]根據(jù)本發(fā)明的實(shí)施例,其中切分模塊被配置為:根據(jù)預(yù)測的Map任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為Map任務(wù)的輸入數(shù)據(jù)分片;由作業(yè)調(diào)度器將Map任務(wù)的輸入數(shù)據(jù)分片指派給Map任務(wù)服務(wù)器執(zhí)行。
[0064]根據(jù)本發(fā)明的實(shí)施例,其中任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系是Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,預(yù)測模塊被配置為利用Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的Reduce任務(wù)執(zhí)行時(shí)間分布。
[0065]根據(jù)本發(fā)明的實(shí)施例,其中切分模塊被配置為:根據(jù)預(yù)測的Reduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為Reduce任務(wù)的輸入數(shù)據(jù)分片;將Reduce任務(wù)的輸入數(shù)據(jù)分片輸入到Reduce任務(wù)的分區(qū)器;由作業(yè)調(diào)度器將分區(qū)器輸出的輸入數(shù)據(jù)分片指派給Reduce任務(wù)服務(wù)器執(zhí)行。
[0066]根據(jù)本發(fā)明的實(shí)施例,其中任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系是從該任務(wù)處理的歷史記錄中獲取的,圖處理作業(yè)的度數(shù)分布是從該圖處理作業(yè)的歷史記錄中獲取的。其中任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系是從該任務(wù)的算法復(fù)雜度中獲取的。
[0067]其中各個(gè)模塊的具體實(shí)現(xiàn)可以參照根據(jù)本發(fā)明的實(shí)施例的基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法,在此不一一贅述。
[0068]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
[0069]以上已經(jīng)描述了本發(fā)明的各實(shí)施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實(shí)施例。在不偏離所說明的各實(shí)施例的范圍和精神的情況下,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說許多修改和變更都是顯而易見的。本文中所用術(shù)語的選擇,旨在最好地解釋各實(shí)施例的原理、實(shí)際應(yīng)用或?qū)κ袌鲋械募夹g(shù)的技術(shù)改進(jìn),或者使本【技術(shù)領(lǐng)域】的其它普通技術(shù)人員能理解本文披露的各實(shí)施例。
【權(quán)利要求】
1.基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的方法,包括: 接收?qǐng)D處理作業(yè)的輸入文件; 利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和所述圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布; 根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
2.根據(jù)權(quán)利要求1所述的方法,其中根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將圖處理作業(yè)的輸入文件切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片包括: 檢測圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)是否以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造; 響應(yīng)于檢測結(jié)果為是,則按照度數(shù)對(duì)所述節(jié)點(diǎn)的鍵值對(duì)排序; 根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
3.根據(jù)權(quán)利要求2所述的方法,其中根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件切分為輸入數(shù)據(jù)分片包括: 響應(yīng)于檢測結(jié)果為否, 用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)進(jìn)行構(gòu)造; 按照度數(shù)對(duì)構(gòu)造后的鍵值對(duì)排序; 根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
4.根據(jù)權(quán)利要求3所述的方法,其中用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)進(jìn)行構(gòu)造包括:用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)的鍵值名進(jìn)行構(gòu)造。
5.根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的方法,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布包括利用Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的Map任務(wù)執(zhí)行時(shí)間分布。
6.根據(jù)權(quán)利要求5所述的方法,其中根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片包括: 根據(jù)預(yù)測的Map任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為Map任務(wù)的輸入數(shù)據(jù)分片; 由作業(yè)調(diào)度器將Map任務(wù)的輸入數(shù)據(jù)分片指派給Map任務(wù)服務(wù)器執(zhí)行。
7.根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的方法,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布包括利用Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的Reduce任務(wù)執(zhí)行時(shí)間分布。
8.根據(jù)權(quán)利要求7所述的方法,其中根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片包括:根據(jù)預(yù)測的Reduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為Reduce任務(wù)的輸入數(shù)據(jù)分片; 將Reduce任務(wù)的輸入數(shù)據(jù)分片輸入到Reduce任務(wù)的分區(qū)器; 由作業(yè)調(diào)度器將分區(qū)器輸出的輸入數(shù)據(jù)分片指派給Reduce任務(wù)服務(wù)器執(zhí)行。
9.根據(jù)權(quán)利要求1所述的方法,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是從該MapReduce任務(wù)處理的歷史記錄中獲取的,圖處理作業(yè)的度數(shù)分布是從該圖處理作業(yè)的歷史記錄中獲取的。
10.根據(jù)權(quán)利要求1所述的方法,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是從該MapReduce任務(wù)的算法復(fù)雜度分析中獲取的。
11.基于MapReduce架構(gòu)實(shí)現(xiàn)圖處理的裝置,包括: 接收模塊,被配置為接收提交的圖處理作業(yè)的輸入文件; 預(yù)測模塊,被配置為利用獲取的MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和所述圖處理作業(yè)的度數(shù) 分布預(yù)測所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布; 切分模塊,被配置為根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將所述圖處理作業(yè)的輸入文件 切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
12.根據(jù)權(quán)利要求11所述的裝置,其中切分模塊包括: 檢測模塊,被配置為檢測圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)是否以該節(jié)點(diǎn)的度數(shù)進(jìn)行構(gòu)造; 排序模塊,被配置為響應(yīng)于檢測結(jié)果為是,則按照度數(shù)對(duì)所述節(jié)點(diǎn)的鍵值對(duì)排序; 切分模塊被配置為根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
13.根據(jù)權(quán)利要求12所述的裝置,其中切分模塊還包括: 鍵值對(duì)構(gòu)造模塊,被配置為響應(yīng)于檢測結(jié)果為否,用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)進(jìn)行構(gòu)造; 排序模塊被配置為按照度數(shù)對(duì)構(gòu)造后的鍵值對(duì)排序; 切分模塊被配置為根據(jù)預(yù)測的所述圖處理作業(yè)的MapReduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)切分為MapReduce任務(wù)的輸入數(shù)據(jù)分片。
14.根據(jù)權(quán)利要求13所述的裝置,其中鍵值對(duì)構(gòu)造模塊進(jìn)一步被配置為:被配置為響應(yīng)于檢測結(jié)果為否,用節(jié)點(diǎn)的度數(shù)對(duì)圖處理作業(yè)的輸入文件中的節(jié)點(diǎn)的鍵值對(duì)的鍵值名進(jìn)行構(gòu)造。
15.根據(jù)權(quán)利要求12至14中任一項(xiàng)所述的裝置,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,預(yù)測模塊被配置為利用獲取的Map任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測所述圖處理作業(yè)的Map任務(wù)執(zhí)行時(shí)間分布。
16.根據(jù)權(quán)利要求14所述的裝置,其中切分模塊被配置為: 根據(jù)預(yù)測的Map任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為Map任務(wù)的輸入數(shù)據(jù)分片; 由作業(yè)調(diào)度器將Map任務(wù)的輸入數(shù)據(jù)分片指派給Map任務(wù)服務(wù)器執(zhí)行。
17.根據(jù)權(quán)利要求11至13中任一項(xiàng)所述的裝置,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布,預(yù)測模塊被配置為利用Reduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布和圖處理作業(yè)的度數(shù)分布預(yù)測圖處理作業(yè)的Reduce任務(wù)執(zhí)行時(shí)間分布。
18.根據(jù)權(quán)利要求17所述的裝置,其中切分模塊被配置為: 根據(jù)預(yù)測的Reduce任務(wù)執(zhí)行時(shí)間分布將排序的節(jié)點(diǎn)的鍵值對(duì)平均切分為Reduce任務(wù)的輸入數(shù)據(jù)分片; 將Reduce任務(wù)的輸入數(shù)據(jù)分片輸入到Reduce任務(wù)的分區(qū)器; 由作業(yè)調(diào)度器將分區(qū)器輸出的輸入數(shù)據(jù)分片指派給Reduce任務(wù)服務(wù)器執(zhí)行。
19.根據(jù)權(quán)利要求11所述的裝置,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是從該MapReduce任務(wù)處理的歷史記錄中獲取的,圖處理作業(yè)的度數(shù)分布是從該圖處理作業(yè)的歷史記錄中獲取的。
20.根據(jù)權(quán)利要求11所述的裝置,其中MapReduce任務(wù)的度數(shù)與執(zhí)行時(shí)間的關(guān)系分布是從該MapReduce任務(wù)的算 法復(fù)雜度分析中獲取的。
【文檔編號(hào)】G06F9/50GK103970604SQ201310043220
【公開日】2014年8月6日 申請(qǐng)日期:2013年1月31日 優(yōu)先權(quán)日:2013年1月31日
【發(fā)明者】史巨偉, 陳冠誠, 劉弢, 王鯤, 王晨 申請(qǐng)人:國際商業(yè)機(jī)器公司