基于服務(wù)等級(jí)協(xié)議的yarn資源分配和節(jié)能調(diào)度方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于云計(jì)算技術(shù)領(lǐng)域,尤其涉及一種基于服務(wù)等級(jí)協(xié)議的YARN(Yet Another Resource Negotiator)資源分配和節(jié)能調(diào)度方法及系統(tǒng)。
【背景技術(shù)】
[0002] 隨著云計(jì)算的興起,越來越多的公司開始使用MapReduce和Apache Hadoop來提 供云計(jì)算服務(wù)。MapReduce是谷歌提出的一種編程模型,通常用于大規(guī)模數(shù)據(jù)集的并行運(yùn) 算。這個(gè)模型可以使任務(wù)在大型集群上自動(dòng)并行化,因此特別適用于大數(shù)據(jù)的分析與處理。 Hadoop是一個(gè)實(shí)現(xiàn)了包括分布式文件系統(tǒng)(HDFS)和MapReduce模型在內(nèi)的開源的分布式 并行編程框架,這個(gè)框架可以部署在普通的商業(yè)硬件上,具有低成本、高有效和高容錯(cuò)等特 性。
[0003] 雖然Hadoop已成為當(dāng)前最流行的大數(shù)據(jù)分析系統(tǒng),但是它在可擴(kuò)展性、可靠性和 資源利用等方面還存在一定的局限性。為了克服這些問題,Apache將Hadoop 1.0中的資 源管理功能抽象成一個(gè)獨(dú)立的通用系統(tǒng)YARN。由于YARN的通用性,Hadoop 2. 0的目標(biāo)已 經(jīng)不再局限于支持MapReduce -種計(jì)算框架,而是朝著對(duì)多種框架(如Storm、Spark和S4 等)進(jìn)行統(tǒng)一管理的方向發(fā)展。
[0004] 在云計(jì)算環(huán)境下,云計(jì)算服務(wù)供應(yīng)商必須盡可能地滿足應(yīng)用程序的服務(wù)等級(jí)協(xié)議 (SLA)中指定的截止時(shí)間。此外,高性能計(jì)算集群的不斷增加和大規(guī)模部署帶來了巨大的資 源和能源消耗,所以在保證SLA的前提下,服務(wù)商們還需要考慮資源和能源的成本問題。
[0005] YARN提供了三種可用的資源調(diào)度器,分別是FIF0(First In First Out)、 Capacity Scheduler和Fair ScheduleroCapacity Scheduler是Yahoo !開發(fā)的多用戶調(diào) 度器,它以隊(duì)列為單位劃分資源,每個(gè)隊(duì)列可設(shè)定一定比例的資源最低保證和使用上限,同 時(shí),每個(gè)用戶也可設(shè)定一定的資源使用上限以防止資源濫用。Fair Scheduler是Facebook 開發(fā)的多用戶調(diào)度器,它同樣添加了多層級(jí)別的資源限制條件以更好地讓多用戶共享一個(gè) Hadoop集群。此外,F(xiàn)air Scheduler提供了更多樣化的調(diào)度策略,它允許為每個(gè)隊(duì)列單獨(dú) 配置調(diào)度策略,分別是先來先服務(wù)、公平調(diào)度和主資源公平調(diào)度。然而,這三種資源調(diào)度器 都不能保證應(yīng)用程序的完成時(shí)間不超過截止時(shí)間,也沒有考慮基于SLA的資源分配和節(jié)能 調(diào)度問題。事實(shí)上,在共享的云計(jì)算環(huán)境下,沒有一種資源調(diào)度器可以準(zhǔn)確判斷出滿足應(yīng)用 程序SLA的最少硬件資源,這是由數(shù)據(jù)本地化、網(wǎng)絡(luò)帶寬、訪問延遲等因素的不確定性造成 的。
[0006]目前,云計(jì)算環(huán)境中的節(jié)能機(jī)制有多種不同的分類標(biāo)準(zhǔn)。其中,按照功耗管理的不 同方式可以分為動(dòng)態(tài)功耗管理技術(shù)和靜態(tài)功耗管理技術(shù)兩類。按照降低能耗階段的不同可 分為關(guān)閉/開啟技術(shù)、動(dòng)態(tài)電壓頻率調(diào)整技術(shù)以及虛擬機(jī)技術(shù)三類,前者主要降低空閑能 耗,后兩者均使用了動(dòng)態(tài)功耗管理技術(shù)來降低任務(wù)的執(zhí)行能耗。此外,基于主機(jī)關(guān)閉/開啟 的節(jié)能策略又可以分為三類:隨機(jī)式策略、超時(shí)式策略和預(yù)測(cè)式策略。利用這些節(jié)能機(jī)制, 有些研宄提出了針對(duì)分布式系統(tǒng)或第一代MapReduce (MRvl)模型的實(shí)時(shí)和/或節(jié)能調(diào)度 方案。然而由于系統(tǒng)結(jié)構(gòu)和資源管理機(jī)制的差異,這些現(xiàn)有的調(diào)度策略有的并不能適用于 YARN,其他的策略則會(huì)導(dǎo)致次優(yōu)的調(diào)度和資源分配決定。
[0007] 鑒于上述研宄背景,目前亟需一種基于服務(wù)等級(jí)協(xié)議的資源分配和節(jié)能調(diào)度方案 來解決YARN環(huán)境中存在的兩大挑戰(zhàn):
[0008] -是在共享的云計(jì)算環(huán)境下如何根據(jù)服務(wù)等級(jí)協(xié)議SLA (Service Level Agreement)自動(dòng)調(diào)整和控制每個(gè)程序的資源分配;
[0009] 二是如何最大限度地降低整個(gè)集群系統(tǒng)的能耗。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明的目的就是為了解決上述問題,提供一種基于服務(wù)等級(jí)協(xié)議的YARN資源 分配和節(jié)能調(diào)度方法及系統(tǒng),它具有(1)在Hadoop 2.0集群中,根據(jù)每個(gè)MapReduce程序 的截止時(shí)間自動(dòng)為其分配合適的資源;(2)在保證SLA的前提下,最大限度地降低整個(gè)集群 系統(tǒng)的能耗的優(yōu)點(diǎn)。本發(fā)明通過對(duì)MapReduce程序進(jìn)行預(yù)分析得到的性能指標(biāo)來確定資源 分配,并結(jié)合動(dòng)態(tài)電壓頻率調(diào)整0VFS)技術(shù)充分利用任務(wù)的松弛時(shí)間來降低Hadoop集群 的能耗。
[0011] 為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0012] 基于服務(wù)等級(jí)協(xié)議的YARN資源分配和節(jié)能調(diào)度方法,包括如下步驟:
[0013] 步驟(1):在提交MapReduce程序前,對(duì)每個(gè)MapReduce程序進(jìn)行預(yù)分析,SP從 MapReduce程序過去的運(yùn)行日志中解析出所需的性能指標(biāo);
[0014] 步驟⑵:在提交MapReduce程序后,根據(jù)步驟⑴解析出的性能指標(biāo),計(jì)算每個(gè) MapReduce程序最差執(zhí)行情況下任務(wù)的最低并行度;
[0015] 步驟(3):根據(jù)每個(gè)MapReduce程序各自的最低并行度,為每個(gè)MapReduce程序分 配不同的資源容器;
[0016] 步驟(4):監(jiān)控每個(gè)MapReduce程序的任務(wù)完成情況,并據(jù)此得出剩余任務(wù)的理想 執(zhí)行時(shí)間和預(yù)期執(zhí)行頻率;
[0017] 步驟(5):根據(jù)剩余任務(wù)的預(yù)期執(zhí)行頻率,利用CPUfreq子系統(tǒng)動(dòng)態(tài)調(diào)節(jié)CPU的電 壓和頻率,從而達(dá)到節(jié)能的目的。
[0018] 所述步驟⑴的性能指標(biāo)包括:
[0019] 程序初始化最長用時(shí)、map任務(wù)的平均執(zhí)行時(shí)間、map任務(wù)的最長執(zhí)行時(shí)間、首次 shuffle的最長持續(xù)時(shí)間、shuffle階段的平均持續(xù)時(shí)間、shuffle階段的最長持續(xù)時(shí)間、 reduce任務(wù)的平均執(zhí)行時(shí)間和reduce任務(wù)的最長執(zhí)行時(shí)間。
[0020] 每個(gè)MapReduce程序包括兩種子任務(wù):map子任務(wù)和reduce子任務(wù)。
[0021] Map子任務(wù)負(fù)責(zé)讀取輸入的數(shù)據(jù)塊并產(chǎn)生中間結(jié)果,中間結(jié)果存在本地磁盤中并 成為reduce子任的輸入數(shù)據(jù)。
[0022] Reduce子任務(wù)負(fù)責(zé)合并相關(guān)的中間結(jié)果并將生成的最終結(jié)果寫入HDFS。
[0023] 所述步驟⑴中:
[0024] 如果所述MapReduce程序從未在集群中運(yùn)行過,則在一個(gè)設(shè)定的數(shù)據(jù)集上預(yù)先執(zhí) 行MapReduce程序來解析出所需的性能指標(biāo)。
[0025] 解析出所得的性能指標(biāo)均獨(dú)立于分配給所述MapReduce程序的資源量,并且反映 了 MapReduce程序所有階段的信息。
[0026] 此外,為了對(duì)頻率進(jìn)行更加精確地調(diào)整,解析時(shí)還需要提取任務(wù)的性能和運(yùn)行頻 率之間的關(guān)系。
[0027] 所述步驟(2)的具體步驟為:
[0028] 步驟(201):在提交MapReduce程序時(shí),將MapReduce程序的性能指標(biāo)提交到資源 管理器中;
[0029] 步驟(202):當(dāng)MapReduce程序加入作業(yè)隊(duì)列后,根據(jù)MapReduce程序的性能指標(biāo) 利用邊界定理預(yù)估MapReduce程序在最差執(zhí)行情況下的完成時(shí)間;
[0030] 步驟(203):根據(jù)步驟(202)中得出的完成時(shí)間的上限,計(jì)算出程序map和reduce 兩階段任務(wù)的最低并行度。
[0031] 所述步驟(202)的最差執(zhí)行情況下的完成時(shí)間:T/p的計(jì)算方法為:
[0037] 其中,^表示map任務(wù)的最低并行度,P/表示reduce任務(wù)的最低并行度,Mj表示
[0032]
[0033]
[0034]
[0035]
[0036] map任務(wù)的數(shù)量,Mavg表示map任務(wù)的平均執(zhí)行時(shí)間,R j表示reduce任務(wù)的數(shù)量,表示 shuffle階段的平均持續(xù)時(shí)間,Ravg表示reduce任務(wù)的平均執(zhí)行時(shí)間,I _表示程序初始化 最長用時(shí),表示map任務(wù)的最長執(zhí)行時(shí)間,R_表示reduce任務(wù)的最長執(zhí)行時(shí)間, 表示首次shuffle的最長持續(xù)時(shí)間,571^^:表示shuffle階段的最長持續(xù)時(shí)間。A、B、Q只 是為了簡化長公式采用的符號(hào),它們表示的就是上面的三個(gè)公式。
[0038] 所述步驟(203)的計(jì)算方法為:
[0039] 基于程序完成時(shí)間的上限,根據(jù)拉格朗日公式計(jì)算出< + /的最小值。在這種情 況下,程序會(huì)占用最少的硬件資源,同時(shí)保證其執(zhí)行時(shí)間不超過截止時(shí)間。
[0040]
[0041]
[0042] 其中,C=Dj-Q,4表