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