一種分布式計(jì)算系統(tǒng)的調(diào)度方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,具體涉及一種分布式計(jì)算系統(tǒng)的調(diào)度方法和裝置。
【背景技術(shù)】
[0002]分布式計(jì)算系統(tǒng)以Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)最為典型。HDFS是分布式計(jì)算的存儲基石,Hadoop的分布式文件系統(tǒng)和其他分布式文件系統(tǒng)有很多類似的特質(zhì)。分布式文件系統(tǒng)基本特點(diǎn)包括:對于整個(gè)集群有單一的命名空間;數(shù)據(jù)一致性,即適合一次寫入多次讀取的模型,客戶端在文件沒有被成功創(chuàng)建之前無法看到文件存在;文件會被分割成多個(gè)文件塊,每個(gè)文件塊被分配存儲到數(shù)據(jù)節(jié)點(diǎn)上,而且根據(jù)配置會由復(fù)制文件塊來保證數(shù)據(jù)的安全性。
[0003]為了解決要處理生產(chǎn)型作業(yè)(數(shù)據(jù)分析、Hive)、大型批處理作業(yè)(數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí))和小型交互作業(yè)(Hive查詢)等問題,同時(shí)為了滿足不同用戶提交的作業(yè)在計(jì)算時(shí)間、存儲空間、數(shù)據(jù)流量和響應(yīng)時(shí)間都有不同需求的情況下,使用Hadoop MapReduce框架能夠應(yīng)對多種類型作業(yè)并行執(zhí)行,使得用戶具有良好的體驗(yàn),業(yè)界提出了公平調(diào)度器(FairScheduler)算法。所謂公平調(diào)度器,主要由作業(yè)池管理器、負(fù)載均衡器、任務(wù)選擇器、權(quán)重調(diào)整器和作業(yè)調(diào)度更新線程等5大組件構(gòu)成,其中,作業(yè)池管理器(PoolManager)主要負(fù)責(zé)以池的單位來管理用戶提交的作業(yè),這是因?yàn)槊恳粋€(gè)作業(yè)池中每次參與調(diào)度的作業(yè)的數(shù)量是由限制的,所以每一個(gè)作業(yè)必須對應(yīng)一個(gè)唯一的作業(yè)池;負(fù)載均衡器(LoadManager )會根據(jù)當(dāng)前集群的負(fù)載以及當(dāng)前任務(wù)跟蹤(TaskTracker )節(jié)點(diǎn)的負(fù)載情況來決定是否應(yīng)該給該TaskTracker節(jié)點(diǎn)分配Map/Reduce任務(wù);任務(wù)選擇器(TaskSelector)負(fù)責(zé)從一個(gè)作業(yè)中選取一個(gè)Map/Reduce任務(wù)給TaskTracker節(jié)點(diǎn);作業(yè)調(diào)度更新線程(UpdateThread)會每隔500ms更新一次可調(diào)度的作業(yè)集,在更新的過程中,它會調(diào)用權(quán)重調(diào)整器(WeightAdjuster)來更新每一個(gè)作業(yè)的權(quán)重。
[0004]然而,公平調(diào)度器的公平調(diào)度算法只是相對的。例如,現(xiàn)有的一種分布式計(jì)算系統(tǒng)的公平調(diào)度方法,例如,HDFS中的公平調(diào)度器提供的公平調(diào)度方法,其調(diào)度的粒度依賴于每個(gè)任務(wù)(Task)所處理的數(shù)據(jù)塊的大小,S卩,對于小數(shù)據(jù)塊,調(diào)度時(shí)分配的時(shí)間資源較短,對于大數(shù)據(jù)塊,調(diào)度時(shí)分配的時(shí)間資源較長。
[0005]也就是說,上述現(xiàn)有的分布式計(jì)算系統(tǒng)的公平調(diào)度方法在數(shù)據(jù)塊大小不均衡時(shí),調(diào)度就不會是公平的了。例如,假設(shè)為處理一個(gè)數(shù)據(jù)塊的任務(wù)(Task)分配10分鐘的時(shí)間資源是調(diào)度公平的,那么,對于1M的數(shù)據(jù)塊,公平調(diào)度器在調(diào)度時(shí),為負(fù)責(zé)處理該1M的數(shù)據(jù)塊的任務(wù)(Task)分配的時(shí)間資源小于10分鐘(例如,8分鐘),而對于IG的數(shù)據(jù)塊,公平調(diào)度器在調(diào)度時(shí),為負(fù)責(zé)處理該IG的數(shù)據(jù)塊的任務(wù)(Task)分配的時(shí)間資源大于10分鐘(例如,19分鐘),那么,這種調(diào)度方法的不公平就體現(xiàn)在為處理數(shù)據(jù)塊的任務(wù)分配的時(shí)間資源大小不等。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種分布式計(jì)算系統(tǒng)的調(diào)度方法和裝置,以提高大數(shù)據(jù)處理時(shí)調(diào)度算法的公平性。
[0007]本發(fā)明實(shí)施例提供一種分布式計(jì)算系統(tǒng)的調(diào)度方法,所述方法包括:
[0008]在第一處理階段,將任務(wù)需要處理的數(shù)據(jù)分割成塊數(shù)為N的數(shù)據(jù)塊Bn,所述N遠(yuǎn)大于所述數(shù)據(jù)在進(jìn)入所述第一處理階段前的塊數(shù)n,所述單個(gè)數(shù)據(jù)塊Bn的容量遠(yuǎn)小于所述數(shù)據(jù)在進(jìn)入所述第一處理階段前單個(gè)數(shù)據(jù)塊Bn的容量;
[0009]若所述分割后的數(shù)據(jù)塊Bn滿足第二處理階段對第二處理階段的任務(wù)均衡的要求,則將相同鍵的數(shù)據(jù)由所述第二處理階段的同一函數(shù)對所述數(shù)據(jù)處理;
[0010]為所述第二處理階段的各個(gè)任務(wù)分配資源以進(jìn)行調(diào)度。
[0011]本發(fā)明另一實(shí)施例提供一種分布式計(jì)算系統(tǒng)的調(diào)度裝置,所述裝置包括:
[0012]第一數(shù)據(jù)分割模塊,用于在第一處理階段,將任務(wù)需要處理的數(shù)據(jù)分割成塊數(shù)為N的數(shù)據(jù)塊Bn,所述N遠(yuǎn)大于所述數(shù)據(jù)在進(jìn)入所述第一處理階段前的塊數(shù)n,所述單個(gè)數(shù)據(jù)塊Bn的容量遠(yuǎn)小于所述數(shù)據(jù)在進(jìn)入所述第一處理階段前單個(gè)數(shù)據(jù)塊Bn的容量;
[0013]第二處理模塊,用于若所述分割后的數(shù)據(jù)塊Bn滿足第二處理階段對第二處理階段的任務(wù)均衡的要求,則將相同鍵的數(shù)據(jù)由所述第二處理階段的同一函數(shù)對所述數(shù)據(jù)處理;
[0014]資源分配模塊,用于為所述第二處理階段的各個(gè)任務(wù)分配資源以進(jìn)行調(diào)度。
[0015]從上述本發(fā)明實(shí)施例可知,在數(shù)據(jù)進(jìn)入第二處理階段前,對該數(shù)據(jù)進(jìn)行了分割,使得分割后的數(shù)據(jù)塊的塊數(shù)遠(yuǎn)大于分割前的數(shù)據(jù)塊的塊數(shù),分割后的單個(gè)數(shù)據(jù)塊的容量遠(yuǎn)小于分割前的單個(gè)數(shù)據(jù)塊的容量。如此,一方面,由于數(shù)據(jù)塊分割成較小的數(shù)據(jù)塊,處理時(shí)間大都在可控范圍之內(nèi),從而能夠提高調(diào)度的公平性;另一方面,即使初次分割后的數(shù)據(jù)塊Bn不能滿足第二處理階段對第二處理階段的任務(wù)均衡的要求,也可以保證初次分割后的數(shù)據(jù)塊Bn在后續(xù)進(jìn)入增加的中間處理階段(在第一處理階段和第二處理階段之間)再次分割時(shí),各個(gè)數(shù)據(jù)塊的容量是相同且在指定的范圍內(nèi),同樣能夠使得數(shù)據(jù)在經(jīng)過中間處理階段和第二處理階段之后,提高調(diào)度的公平性;第三方面,當(dāng)數(shù)據(jù)被分割成容量較小的數(shù)據(jù)塊時(shí),處理單個(gè)數(shù)據(jù)塊的時(shí)間相對較小,如此也可以保證足夠多的并發(fā)作業(yè),增強(qiáng)了分布式計(jì)算系統(tǒng)的并發(fā)性。
【附圖說明】
[0016]圖1是本發(fā)明實(shí)施例提供的分布式計(jì)算系統(tǒng)的調(diào)度方法的基本流程示意圖;
[0017]圖2是現(xiàn)有的MapReduce框架的Map階段和Reduce階段處理數(shù)據(jù)示意圖;
[0018]圖3是本發(fā)明實(shí)施例提供的分布式計(jì)算系統(tǒng)的調(diào)度裝置邏輯結(jié)構(gòu)示意圖;
[0019]圖4是本發(fā)明另一實(shí)施例提供的分布式計(jì)算系統(tǒng)的調(diào)度裝置邏輯結(jié)構(gòu)示意圖;
[0020]圖5_a是本發(fā)明另一實(shí)施例提供的分布式計(jì)算系統(tǒng)的調(diào)度裝置邏輯結(jié)構(gòu)示意圖;
[0021]圖5_b是本發(fā)明另一實(shí)施例提供的分布式計(jì)算系統(tǒng)的調(diào)度裝置邏輯結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0022]本發(fā)明實(shí)施例提供一種分布式計(jì)算系統(tǒng)的調(diào)度方法,所述方法包括:在第一處理階段,將任務(wù)需要處理的數(shù)據(jù)分割成塊數(shù)為N的數(shù)據(jù)塊Bn,所述N遠(yuǎn)大于所述數(shù)據(jù)在進(jìn)入所述第一處理階段前的塊數(shù)n,所述單個(gè)數(shù)據(jù)塊Bn的容量遠(yuǎn)小于所述數(shù)據(jù)在進(jìn)入所述第一處理階段前單個(gè)數(shù)據(jù)塊Bn的容量;若所述分割后的數(shù)據(jù)塊Bn滿足第二處理階段對第二處理階段的任務(wù)均衡的要求,則將相同鍵的數(shù)據(jù)由所述第二處理階段的同一函數(shù)對所述數(shù)據(jù)處理;為所述第二處理階段的各個(gè)任務(wù)分配資源以進(jìn)行調(diào)度。本發(fā)明實(shí)施例還提供相應(yīng)的分布式計(jì)算系統(tǒng)的調(diào)度裝置。以下分別進(jìn)行詳細(xì)說明。
[0023]本發(fā)明實(shí)施例的分布式計(jì)算系統(tǒng)的調(diào)度方法可應(yīng)用于分布式計(jì)算系統(tǒng),例如,Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System, HDFS),其執(zhí)行主體可以是HDFS中的調(diào)度器或者其中的功能模塊。本發(fā)明實(shí)施例提供的分布式計(jì)算系統(tǒng)的調(diào)度方法的基本流程可參考圖1,主要包括步驟SlOl至步驟S103,詳細(xì)說明如下:
[0024]SlOl,在第一處理階段,將任務(wù)需要處理的數(shù)據(jù)分割成塊數(shù)為N的數(shù)據(jù)塊Bn,其中,N遠(yuǎn)大于所述數(shù)據(jù)在進(jìn)入第一處理階段前的塊數(shù)n,單個(gè)數(shù)據(jù)塊Bn的容量遠(yuǎn)小于所述數(shù)據(jù)在進(jìn)入第一處理階段前單個(gè)數(shù)據(jù)塊Bn的容量。
[0025]在分布式計(jì)算系統(tǒng)中,數(shù)據(jù)的處理可由第一處理階段和第二處理階段完成,例如,在HDFS中,第一處理階段可以是映射即Map階段,第二處理階段可以是規(guī)約即Reduce階段,兩者構(gòu)成MapReduce框架。
[0026]在現(xiàn)有的MapReduce框架中,所謂Map階段,是指定一個(gè)Map (映射)函數(shù),用來將一組鍵值對(key-value-pair)映射成一組新的鍵