專利名稱:MapReduce參數(shù)的動(dòng)態(tài)確定方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式計(jì)算技術(shù)領(lǐng)域,尤其涉及一種MapReduce參數(shù)的動(dòng)態(tài)確定方法
及裝置。
背景技術(shù):
映射化簡MapReduce是一種分布式計(jì)算框架,其借鑒函數(shù)式編程的思想,對大規(guī)模數(shù)據(jù)集進(jìn)行高效地分布式計(jì)算。MapReduce框架將一個(gè)計(jì)算作業(yè)Job劃分成若干個(gè)映射Map任務(wù)和化簡Reduce任務(wù),Map任務(wù)階段和Reduce任務(wù)階段的輸入和輸出的數(shù)據(jù)模型都是Key-Value形式的,并且Reduce任務(wù)階段依賴Map任務(wù)階段的輸出作為自己的輸入。而Map任務(wù)的數(shù)量由輸入的數(shù)據(jù)集決定,Reduce任務(wù)的數(shù)量由用戶指定。由于輸入的數(shù)據(jù)集一般較大,因此,數(shù)據(jù)集會(huì)被切割成多個(gè)數(shù)據(jù)塊chunk,在MapReduce作業(yè)提交之后,MapReduce框架的調(diào)度器Master會(huì)根據(jù)輸入數(shù)據(jù)集包含的數(shù)據(jù)塊的數(shù)量確定相應(yīng)的Map任務(wù)的數(shù)量,使得每個(gè)Map任務(wù)處理一個(gè)數(shù)據(jù)塊。而每個(gè)Map任務(wù)輸入的數(shù)據(jù)塊被轉(zhuǎn)換成Key-Value形式,經(jīng)過Map運(yùn)算,輸出Key-Value形式的中間結(jié)果,中間結(jié)果會(huì)按Key排序,排序結(jié)果將被輸出到此Map任務(wù)運(yùn)行所在計(jì)算節(jié)點(diǎn)的本地磁盤上,MapReduce框架會(huì)按Key排序并且按用戶指定的Reduce任務(wù)的數(shù)量對key分區(qū)并對落在同一分區(qū)中的Value做聚合。每個(gè)Reduce任務(wù)的輸入數(shù)據(jù)是多個(gè)Map任務(wù)輸出的中間結(jié)果的一部分,例如,如果用戶指定了 η個(gè)Reduce任務(wù),就存在η個(gè)分區(qū),屬于每個(gè)分區(qū)的中間結(jié)果通過網(wǎng)絡(luò)傳輸?shù)綀?zhí)行該分區(qū)計(jì)算的Reduce任務(wù)中,執(zhí)行用戶指定的Reduce算法,最后輸出結(jié)果。由于在現(xiàn)有的MapReduce框架中,在Map任務(wù)執(zhí)行前就必須知道Reduce任務(wù)的準(zhǔn)確數(shù)量,從而在Map任務(wù)階段可以根據(jù)用戶指定的Reduce任務(wù)的數(shù)量對輸出的中間結(jié)果進(jìn)行分區(qū),而Reduce任務(wù)的數(shù)量通常是又由用戶人為指定,因此,無論Map任務(wù)階段輸出的中間結(jié)果有多少,都是按照既定的Reduce任務(wù)的數(shù)量進(jìn)行Reduce任務(wù)的作業(yè)。當(dāng)Map任務(wù)階段輸出的中間結(jié)果很少時(shí),完全可以在I 2個(gè)Reduce任務(wù)中執(zhí)行,但是可能用戶指定的Reduce任務(wù)的數(shù)量遠(yuǎn)大于2,如果還按照用戶指定的Reduce任務(wù)的數(shù)量作業(yè)則會(huì)導(dǎo)致不必要的資源浪費(fèi);而當(dāng)Map任務(wù)階段輸出的中間結(jié)果很多、用戶指定的Reduce任務(wù)的數(shù)量又相對較少時(shí),如果按照用戶指定的Reduce任務(wù)的數(shù)量作業(yè)則會(huì)導(dǎo)致執(zhí)行時(shí)間過長的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種MapReduce參數(shù)的動(dòng)態(tài)確定方法及裝置,從而實(shí)現(xiàn)在MapReduce作業(yè)中動(dòng)態(tài)確定一個(gè)合理的Reduce任務(wù)的數(shù)量。本發(fā)明的第一個(gè)方面是提供一種MapReduce參數(shù)的動(dòng)態(tài)確定方法,包括:獲取MapReduce作業(yè)請求,所述MapReduce作業(yè)請求包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù);若所述用于表示 是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許,則監(jiān)控Map任務(wù)的執(zhí)行;若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,所述已執(zhí)行的Map任務(wù)的輸出結(jié)果映射到預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū),則確定調(diào)整后的Reduce任務(wù)的數(shù)量;根據(jù)所述調(diào)整后的Reduce任務(wù)的數(shù)量,將各未執(zhí)行的預(yù)設(shè)Reduce任務(wù)對應(yīng)到各調(diào)整后的Reduce任務(wù),以使執(zhí)行各調(diào)整后的Reduce任務(wù)。本發(fā)明的另一個(gè)方面是提供一種MapReduce參數(shù)的動(dòng)態(tài)確定裝置,包括:作業(yè)請求獲取模塊,用于獲取MapReduce作業(yè)請求,所述MapReduce作業(yè)請求包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù);監(jiān)控模塊,用于若所述用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許,則監(jiān)控Map任務(wù)的執(zhí)行;確定模塊,用于若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,所述已執(zhí)行的Map任務(wù)的輸出結(jié)果映射到的預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū),則確定調(diào)整后的Reduce任務(wù)的數(shù)量;映射模塊,用于根據(jù)所述調(diào)整后的Reduce任務(wù)的數(shù)量,將各未執(zhí)行的預(yù)設(shè)Reduce任務(wù)對應(yīng)到各調(diào)整后的Reduce任務(wù),以使執(zhí)行各調(diào)整后的Reduce任務(wù)。采用上述本發(fā)明技術(shù)方案的有益效果是:本實(shí)施例通過對MapReduce框架的Master進(jìn)行監(jiān)控,從而可以根據(jù)Map任務(wù)的執(zhí)行情況,對MapReduce作業(yè)請求中Reduce任務(wù)的數(shù)量進(jìn)行動(dòng)態(tài)調(diào)整,從而按照調(diào)整后的Reduce任務(wù)的數(shù)量執(zhí)行Reduce任務(wù),以解決現(xiàn)有技術(shù)中由用戶靜態(tài)指定Reduce任務(wù)的數(shù)量而導(dǎo)致的資源浪費(fèi)或執(zhí)行時(shí)間過長等問題。
圖1為本發(fā)明實(shí)施例一提供的一種MapReduce參數(shù)的動(dòng)態(tài)確定方法的流程圖;圖2為本發(fā)明實(shí)施例二提供的一種MapReduce參數(shù)的動(dòng)態(tài)確定裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式圖1為本發(fā)明實(shí)施例一提供的一種MapReduce參數(shù)的動(dòng)態(tài)確定方法的流程圖,如圖1所示,所述方法可以包括如下步驟:步驟101,獲取MapReduce作業(yè)請求;所述MapReduce作業(yè)請求包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù);需要說明的是,本實(shí)施例方法的執(zhí)行主體可以是MapReduce參數(shù)的動(dòng)態(tài)確定裝置,該裝置對MapReduce框架的Master進(jìn)行監(jiān)控,從而可以通過Master獲取MapReduce的作業(yè)請求。其中,MapReduce的作業(yè)請求可以包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)。由于在執(zhí)行Map任務(wù)之前就必須知道Reduce任務(wù)的準(zhǔn)確數(shù)量,以便在Map任務(wù)階段可以根據(jù)Reduce任務(wù)的數(shù)量對輸出的中間結(jié)果進(jìn)行分區(qū),因此,對每一個(gè)MapReduce的作業(yè)請求都預(yù)設(shè)一個(gè)Reduce任務(wù)的數(shù)量,以便執(zhí)行Map任務(wù);另外,本實(shí)施例中MapReduce參數(shù)的動(dòng)態(tài)確定裝置根據(jù)用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)確定是否啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整,舉例來說,該參數(shù)可以是表示允許啟動(dòng)或不允許啟動(dòng)的參數(shù)值,如可以是True、False或缺省,在本實(shí)施例中,True可以表示對待作業(yè)數(shù)據(jù)集進(jìn)行MapReduce作業(yè)時(shí)允許MapReduce參數(shù)的動(dòng)態(tài)確定裝置對Reduce任務(wù)的數(shù)量進(jìn)行動(dòng)態(tài)調(diào)整,以便在執(zhí)行Reduce任務(wù)時(shí)可以按照調(diào)整后的Reduce任務(wù)的數(shù)量執(zhí)行Reduce任務(wù);False或缺省則可以表示對待作業(yè)數(shù)據(jù)集進(jìn)行MapReduce作業(yè)時(shí)不允許MapReduce參數(shù)的動(dòng)態(tài)確定裝置對Reduce任務(wù)的數(shù)量進(jìn)行動(dòng)態(tài)調(diào)整,而在執(zhí)行Reduce任務(wù)時(shí)只能按照預(yù)設(shè)的Reduce任務(wù)的數(shù)量執(zhí)行Reduce 任務(wù)。步驟102,若所述用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許,則監(jiān)控Map任務(wù)的執(zhí)行;在本實(shí)施例中,當(dāng)用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許時(shí),則該參數(shù)可以觸發(fā)MapReduce參數(shù)的動(dòng)態(tài)確定裝置啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整,因此,MapReduce參數(shù)的動(dòng)態(tài)確定裝置繼續(xù)對MapReduce框架的Master進(jìn)行監(jiān)控,并根據(jù)待作業(yè)數(shù)據(jù)集確定Map任務(wù)的數(shù)量,或通過Master獲取本次MapReduce作業(yè)中Map任務(wù)的數(shù)量,同時(shí)根據(jù)作業(yè)請求監(jiān)控Map任務(wù)的執(zhí)行。步驟103,若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,則確定調(diào)整后的Reduce任務(wù)的數(shù)量;在本實(shí)施例中,為了能夠?qū)educe任務(wù)的數(shù)量進(jìn)行合理的調(diào)整,因此,可以在Map任務(wù)執(zhí)行一段時(shí)間后,結(jié)合已執(zhí)行的Map任務(wù)的數(shù)量以及已執(zhí)行的Map任務(wù)輸出的中間結(jié)果的數(shù)據(jù)量而確定本次MapReduce作業(yè)中Reduce任務(wù)的輸入數(shù)據(jù)總量,具體來說,由于每個(gè)Map任務(wù)輸入的數(shù)據(jù)量相同,因此,其輸出的中間結(jié)果的數(shù)據(jù)量也基本相同,又由于Reduce任務(wù)的輸入就是Map任務(wù)的輸出,因此,可以根據(jù)已執(zhí)行的Map任務(wù)的數(shù)量以及已執(zhí)行的Map任務(wù)輸出的中間結(jié)果的數(shù)據(jù)量和本次MapReduce作業(yè)中Map任務(wù)的數(shù)量而確定Reduce任務(wù)的輸入數(shù)據(jù)總量,從而根據(jù)Reduce任務(wù)的數(shù)據(jù)總量對Reduce任務(wù)的數(shù)量進(jìn)行調(diào)整。在本實(shí)施例中,由于在開始執(zhí)行Map任務(wù)時(shí)是按照預(yù)設(shè)的Reduce任務(wù)的數(shù)量對輸出的中間結(jié)果進(jìn)行分區(qū)的,因此,已執(zhí)行的Map任務(wù)輸出的中間結(jié)果被映射到的預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū)中。在本實(shí)施例中,通過設(shè)置的第一閾值作為觸發(fā)MapReduce參數(shù)的動(dòng)態(tài)確定裝置啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整時(shí)機(jī),具體來說,當(dāng)已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值時(shí),則觸發(fā)MapReduce參數(shù)的動(dòng)態(tài)確定裝置根據(jù)已執(zhí)行的Map任務(wù)對Reduce任務(wù)的數(shù)量進(jìn)行動(dòng)態(tài)調(diào)整,從而確定調(diào)整后的Reduce任務(wù)的數(shù)量,通常情況下,調(diào)整后的Reduce任務(wù)的數(shù)量小于預(yù)設(shè)的Reduce任務(wù)的數(shù)量。步驟104,根據(jù)所述調(diào)整后的Reduce任務(wù)的數(shù)量,將各未執(zhí)行的預(yù)設(shè)Reduce任務(wù)對應(yīng)到各調(diào)整后的Reduce任務(wù),以使執(zhí)行各調(diào)整后的Reduce任務(wù)。在本實(shí)施例中,由于在開始執(zhí)行Map任務(wù)時(shí)是按照預(yù)設(shè)的Reduce任務(wù)的數(shù)量對輸出的中間結(jié)果進(jìn)行分區(qū)的,即每個(gè)預(yù)設(shè)Reduce任務(wù)分別對應(yīng)一個(gè)分區(qū),因此,在對Reduce任務(wù)的數(shù)量進(jìn)行調(diào)整后,則將預(yù)設(shè)的Reduce任務(wù)的數(shù)量中未執(zhí)行的Reduce任務(wù)所對應(yīng)的分區(qū)映射到調(diào)整后的Reduce任務(wù),即調(diào)整后的一個(gè)Reduce任務(wù)可以對應(yīng)一個(gè)或多個(gè)預(yù)設(shè)Reduce任務(wù)對應(yīng)的分區(qū),從而使得Master可以調(diào)度執(zhí)行調(diào)整后的Reduce任務(wù)。本實(shí)施例通過對MapReduce框架的Master進(jìn)行監(jiān)控,從而可以根據(jù)Map任務(wù)的執(zhí)行情況,對MapReduce作業(yè)請求中Reduce任務(wù)的數(shù)量進(jìn)行動(dòng)態(tài)調(diào)整,從而按照調(diào)整后的Reduce任務(wù)的數(shù)量執(zhí)行Reduce任務(wù),以解決現(xiàn)有技術(shù)中由用戶靜態(tài)指定Reduce任務(wù)的數(shù)量而導(dǎo)致的資源浪費(fèi)或執(zhí)行時(shí)間過長等問題。具體的,上述實(shí)施例中所述的預(yù)設(shè)的第一閾值可以是預(yù)設(shè)的Map任務(wù)的數(shù)量閾值,例如,可以是30個(gè)Map任務(wù)或100個(gè)Map任務(wù)等,具體數(shù)值的選取可以根據(jù)實(shí)際作業(yè)情況進(jìn)行設(shè)置,本實(shí)施例并不對此進(jìn)行限定。因此,當(dāng)已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的Map任務(wù)的數(shù)量閾值時(shí),則觸發(fā)MapReduce參數(shù)的動(dòng)態(tài)確定裝置啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整,從而確定調(diào)整后的Reduce任務(wù)的數(shù)量。優(yōu)選地,上述實(shí)施例中所述的預(yù)設(shè)的第一閾值可以是預(yù)設(shè)的比值,例如,可以是1/5或1/3等,具體數(shù)值的選取可以根據(jù)實(shí)際作業(yè)情況進(jìn)行設(shè)置,本實(shí)施例并不對此進(jìn)行限定。因此,當(dāng)已執(zhí)行的Map任務(wù)的數(shù)量與Map任務(wù)的總數(shù)量之間的比值滿足預(yù)設(shè)的比值時(shí),則觸發(fā)MapReduce參數(shù)的動(dòng)態(tài)確定裝置啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整,從而確定調(diào)整后的Reduce任務(wù)的數(shù)量,在本實(shí)施例中,Map任務(wù)的總數(shù)量可以根據(jù)待作業(yè)數(shù)據(jù)集確定,也可以通過Master獲取。進(jìn)一步的,在上述任一實(shí)施例的基礎(chǔ)上,MapReduce作業(yè)請求中還可以包括用于提前調(diào)度Reduce任務(wù)執(zhí)行的預(yù)設(shè)的第二閾值,其中,第二閾值也可以是預(yù)設(shè)的Map任務(wù)的數(shù)量閾值或比值,即當(dāng)已執(zhí)行的Map任務(wù)的數(shù)量滿足第二閾值時(shí),可以觸發(fā)Master開始執(zhí)行預(yù)設(shè)Reduce任務(wù)。在本實(shí)施例中,當(dāng)?shù)诙撝敌∮诘谝婚撝禃r(shí),即已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第二閾值但不滿足預(yù)設(shè)的第一閾值時(shí),則MapReduce參數(shù)的動(dòng)態(tài)確定裝置還可以監(jiān)控預(yù)設(shè)Reduce任務(wù)的執(zhí)行,其中,每個(gè)預(yù)設(shè)Reduce任務(wù)分別對應(yīng)預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū)中的一個(gè)分區(qū);而當(dāng)已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值之后,則MapReduce參數(shù)的動(dòng)態(tài)確定裝置還可以指示停止未執(zhí)行的預(yù)設(shè)Reduce任務(wù)。并根據(jù)已執(zhí)行的Map任務(wù)的數(shù)量和本次MapReduce作業(yè)中Reduce任務(wù)的數(shù)據(jù)總量確定未執(zhí)行的Reduce任務(wù)的數(shù)據(jù)量,從而根據(jù)未執(zhí)行的Reduce任務(wù)的數(shù)據(jù)量確定對應(yīng)未執(zhí)行的Reduce任務(wù)的數(shù)量,具體的,在執(zhí)行未執(zhí)行的Map任務(wù)時(shí),將其輸出的中間結(jié)果映射到重新確定的Reduce任務(wù)的數(shù)量的分區(qū)中,即未執(zhí)行的預(yù)設(shè)Reduce任務(wù)通過重新確定的Reduce任務(wù)執(zhí)行。對于一個(gè)MapReduce作業(yè)而言,在Map和Reduce兩個(gè)階段中,由于Map任務(wù)的數(shù)量是固定的,因此,Map任務(wù)的成本也是相對固定的,而通過MapReduce性能模型,分別計(jì)算同一 MapReduce作業(yè)對應(yīng)不同Reduce任務(wù)的數(shù)量的情況下作業(yè)的總時(shí)間成本和執(zhí)行時(shí)間時(shí)發(fā)現(xiàn),作業(yè)的總時(shí)間成本通常會(huì)隨著Reduce任務(wù)的數(shù)量的增加而增加,同時(shí),增加Reduce任務(wù)的數(shù)量會(huì)提高集群的計(jì)算能力和任務(wù)之間的并行度,縮短作業(yè)的執(zhí)行時(shí)間;反之亦然。因此,在本發(fā)明的一個(gè)具體實(shí)現(xiàn)方式中,通過MapReduce性能模型,計(jì)算Reduce任務(wù)的成本,并在時(shí)間成本與執(zhí)行時(shí)間之間尋找平衡點(diǎn)以對Reduce任務(wù)的數(shù)量進(jìn)行調(diào)整。舉例來說,在MapReduce性能模型中,Reduce任務(wù)的時(shí)間成本包括TRl_init、TR2_read>TR3_net> TR4_merge> TR5_serial、TR6_io、TR7_parse、TR8_Reducer、TR9_net 和TR10_write,其中,TRl_init表示初始化Reduce任務(wù)時(shí)系統(tǒng)的時(shí)間成本,即初始化任務(wù)、打開任務(wù)、關(guān)閉任務(wù)、加載程序等的時(shí)間,通常TRl_init=RedSysCost+RedInit ;TR2_read表示開始執(zhí)行Reduce任務(wù)時(shí)讀數(shù)據(jù)的IO成本,通常TR2_read=ReduceInput/seqRead ;TR3_net表示執(zhí)行Reduce任務(wù)時(shí)傳輸數(shù)據(jù)的網(wǎng)絡(luò)成本,通常了
權(quán)利要求
1.一種MapReduce參數(shù)的動(dòng)態(tài)確定方法,其特征在于,包括: 獲取MapReduce作業(yè)請求,所述MapReduce作業(yè)請求包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù); 若所述用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許,則監(jiān)控Map任務(wù)的執(zhí)行; 若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,所述已執(zhí)行的Map任務(wù)的輸出結(jié)果映射到預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū),則確定調(diào)整后的Reduce任務(wù)的數(shù)量; 根據(jù)所述調(diào)整后的Reduce任務(wù)的數(shù)量,將各未執(zhí)行的預(yù)設(shè)Reduce任務(wù)對應(yīng)到各調(diào)整后的Reduce任務(wù),以使執(zhí)行各調(diào)整后的Reduce任務(wù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述確定調(diào)整后的Reduce任務(wù)的數(shù)量,具體包括: 根據(jù)未執(zhí)行的Reduce任務(wù)的數(shù)據(jù)總量,確定調(diào)整后的Reduce任務(wù)的數(shù)量。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)未執(zhí)行的Reduce任務(wù)的數(shù)據(jù)總量,確定調(diào)整后的Reduce任務(wù)的數(shù)量,具體包括: 根據(jù)以下公式,確定調(diào)整后的Reduce任務(wù)的數(shù)量:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述MapReduce作業(yè)請求還包括用于提前調(diào)度Reduce任務(wù)執(zhí)行的預(yù)設(shè)的第二閾值,若所述第二閾值小于所述第一閾值,則所述若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值之前,還包括: 若所述已執(zhí)行的Map任務(wù)的數(shù)量滿足所述第二閾值且不滿足預(yù)設(shè)的第一閾值,則監(jiān)控預(yù)設(shè)Reduce任務(wù)的執(zhí)行,每個(gè)預(yù)設(shè)Reduce任務(wù)分別對應(yīng)所述預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū)中的一個(gè)分區(qū); 所述若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值之后,還包括: 指示停止執(zhí)行未執(zhí)行的預(yù)設(shè)Reduce任務(wù)。
5.根據(jù)權(quán)利要求1 4中任一項(xiàng)所述的方法,其特征在于,所述預(yù)設(shè)的第一閾值為預(yù)設(shè)的Map任務(wù)的數(shù)量閾值或預(yù)設(shè)的比值,所述若所述已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,則確定調(diào)整后的Reduce任務(wù)的數(shù)量,具體為: 若所述已執(zhí)行的Map任務(wù)的數(shù)量滿足所述預(yù)設(shè)的Map任務(wù)的數(shù)量閾值,則啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制,確定調(diào)整后的Reduce任務(wù)的數(shù)量;或者, 若所述已執(zhí)行的Map任務(wù)的數(shù)量與Map任務(wù)的總數(shù)量之間的比值滿足預(yù)設(shè)的比值,則啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制,確定調(diào)整后的Reduce任務(wù)的數(shù)量,所述Map任務(wù)的總數(shù)量根據(jù)所述待作業(yè)數(shù)據(jù)集確定。
6.—種MapReduce參數(shù)的動(dòng)態(tài)確定裝置,其特征在于,包括: 作業(yè)請求獲取模塊,用于獲取MapReduce作業(yè)請求,所述MapReduce作業(yè)請求包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù); 監(jiān)控模塊,用于若所述用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許,則監(jiān)控Map任務(wù)的執(zhí)行; 確定模塊,用于若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,所述已執(zhí)行的Map任務(wù)的輸出結(jié)果映射到的預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū),則確定調(diào)整后的Reduce任務(wù)的數(shù)量; 映射模塊,用于根據(jù)所述調(diào)整后的Reduce任務(wù)的數(shù)量,將各未執(zhí)行的預(yù)設(shè)Reduce任務(wù)對應(yīng)到各調(diào)整后的Reduce任務(wù),以使執(zhí)行各調(diào)整后的Reduce任務(wù)。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述確定模塊具體用于: 根據(jù)未執(zhí)行的Reduce任務(wù)的數(shù)據(jù)總量,確定調(diào)整后的Reduce任務(wù)的數(shù)量。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述確定模塊具體用于: 根據(jù)以下公式,確定調(diào)整后的Reduce任務(wù)的數(shù)量:
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述MapReduce作業(yè)請求還包括用于提前調(diào)度Reduce任務(wù)執(zhí)行的預(yù)設(shè)的第二閾值,若所述第二閾值小于所述第一閾值,則所述監(jiān)控模塊具體用于: 若所述已執(zhí)行的Map任務(wù)的數(shù)量滿足所述第二閾值且不滿足預(yù)設(shè)的第一閾值,則監(jiān)控預(yù)設(shè)Reduce任務(wù)的執(zhí)行,每個(gè)預(yù)設(shè)Reduce任務(wù)分別對應(yīng)所述預(yù)設(shè)的Reduce任務(wù)的數(shù)量的分區(qū)中的一個(gè)分區(qū); 并在所述已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值之后,指示停止執(zhí)行未執(zhí)行的預(yù)設(shè)Reduce任務(wù)。
10.根據(jù)權(quán)利要求6 9任一項(xiàng)所述的裝置,其特征在于,所述預(yù)設(shè)的第一閾值為預(yù)設(shè)的Map任務(wù)的數(shù)量閾值或預(yù)設(shè)的比值,所述確定模塊具體用于: 若所述已執(zhí)行的Map任務(wù)的數(shù)量滿足所述預(yù)設(shè)的Map任務(wù)的數(shù)量閾值,則啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制,確定調(diào)整后的Reduce任務(wù)的數(shù)量;或, 若所述已執(zhí)行的Map任務(wù)的數(shù)量與Map任務(wù)的總數(shù)量之間的比值滿足預(yù)設(shè)的比值,則啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制,確定調(diào)整后的Reduce任務(wù)的數(shù)量,所述Map任務(wù)的總數(shù)量根據(jù)所述待作業(yè)數(shù)據(jù)集確定。
全文摘要
本發(fā)明提供一種MapReduce參數(shù)的動(dòng)態(tài)確定方法及裝置,其中,所述方法包括獲取MapReduce作業(yè)請求,所述MapReduce作業(yè)請求包括待作業(yè)數(shù)據(jù)集、預(yù)設(shè)的Reduce任務(wù)的數(shù)量以及用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù);若用于表示是否允許啟動(dòng)Reduce任務(wù)數(shù)量的調(diào)整機(jī)制的參數(shù)為允許,則監(jiān)控Map任務(wù)的執(zhí)行;若已執(zhí)行的Map任務(wù)的數(shù)量滿足預(yù)設(shè)的第一閾值,則確定調(diào)整后的Reduce任務(wù)的數(shù)量;根據(jù)調(diào)整后的Reduce任務(wù)的數(shù)量,將各未執(zhí)行的預(yù)設(shè)Reduce任務(wù)對應(yīng)到各調(diào)整后的Reduce任務(wù),從而實(shí)現(xiàn)在MapReduce作業(yè)中動(dòng)態(tài)確定一個(gè)合理的Reduce任務(wù)的數(shù)量。
文檔編號(hào)G06F9/50GK103218263SQ20131007850
公開日2013年7月24日 申請日期2013年3月12日 優(yōu)先權(quán)日2013年3月12日
發(fā)明者林學(xué)練, 于晨暉, 韓軍, 葉玥, 崔曉龍 申請人:北京航空航天大學(xué)