一種基于Hadoop多作業(yè)環(huán)境下的資源調度方法
【技術領域】
[0001] 本發(fā)明屬于大數(shù)據(jù)技術領域,更具體地,涉及一種基于Hadoop多作業(yè)環(huán)境下的資 源調度方法。
【背景技術】
[0002] 隨著大數(shù)據(jù)與互聯(lián)網(wǎng)時代來臨,大數(shù)據(jù)技術目前已成為學術界和產(chǎn)業(yè)界的研宄熱 點,而Hadoop作為開源的大數(shù)據(jù)處理平臺不論在企業(yè)還是學術科研領域都已經(jīng)得到了廣 泛應用。但是第1代Hadoop在使用中存在單點故障、資源利用率低、無法支持多種計算框 架等實際問題。為克服上述缺點,Apache推出了第2代Hadoop,將資源管理模塊構建成了 一個獨立的通用資源管理系統(tǒng)Yarn,統(tǒng)一負責集群的資源分配以及任務調度。Yarn能夠讓 多種計算框架(MapReduce、內存計算框架Spark、流式計算框架Strom和圖計算框架等)運 行在一個集群中,為不同的并行化計算提供統(tǒng)一的資源分配服務,使得集群具有易于運維、 資源彈性可伸縮和數(shù)據(jù)可共享等優(yōu)點。其中,資源調度器是Hadoop Yarn中最核心的組件 之一,Yarn的資源調度策略會直接影響集群的任務分配,從而影響Hadoop集群整體性能。
[0003] 目前Yarn主要自帶以下三種常用資源調度器:① FIFO調度器(First In First Out Scheduler):先來先服務資源調度器,Hadoop按照作業(yè)提交順序依次運行這些作業(yè); ②計算能力調度器(Capacity Scheduler):是Yarn中默認的資源調度器,適用于多用戶共 享集群,采用隊列的形式分配和調度集群資源,每個隊列可設定一定比例的資源最低保證 和使用上限,同時,每個用戶也可設定一定的資源使用上限以防止資源濫用;③公平調度器 (Fair Scheduler):以隊列為單位劃分資源,支持分級隊列,允許每個隊列單獨配置調度策 略,包括FIFO、Fair和DRF,即先來先服務、公平調度和主資源公平調度。
[0004] Yarn已有的資源調度策略雖然十分多樣化,但仍存在明顯的缺陷。一方面,在實 際運行環(huán)境中,Hadoop集群多為異構集群,集群中各計算節(jié)點的綜合計算能力存在較大差 異,而Yarn常規(guī)的靜態(tài)任務資源分配策略無法感知不同節(jié)點的異構性,無法根據(jù)集群中異 構節(jié)點的計算能力、作業(yè)執(zhí)行監(jiān)控狀況和資源使用情況動態(tài)調整節(jié)點上運行的任務數(shù)目, 間接導致集群所有計算節(jié)點上的并發(fā)度一樣;另一方面,Yarn現(xiàn)有的資源調度算法并未考 慮用戶提交的作業(yè)之間的區(qū)別,即未考慮不同類型的作業(yè)以及同作業(yè)不同執(zhí)行階段實際資 源需求的異構性,存在大量資源碎片的現(xiàn)象,導致Hadoop平臺無法充分利用集群資源,例 如很多作業(yè)任務可能是i〇密集型的,消耗的cpu資源非常少,如果此時資源調度器為它分 配一整個單位的cpu,剩余的cpu碎片資源無法讓其他作業(yè)任務使用,是一種嚴重的資源浪 費,會極大程度上地降低系統(tǒng)資源的利用率,減少作業(yè)任務執(zhí)行的并發(fā)度,從而直接影響集 群作業(yè)的執(zhí)行效率,最終導致Hadoop整體性能下降。
[0005] 綜上所述,Had〇〇p2. 0現(xiàn)有的資源調度策略未考慮集群節(jié)點和作業(yè)的異構性,無法 根據(jù)節(jié)點的處理能力、作業(yè)執(zhí)行監(jiān)控狀況和資源使用情況動態(tài)改變作業(yè)的資源需求,無法 同時保證作業(yè)任務的高效并發(fā)和集群資源的充分利用,從而導致系統(tǒng)整體性能下降。
【發(fā)明內容】
[0006] 針對現(xiàn)有資源調度技術的缺陷,本發(fā)明的目的在于提供一種能夠根據(jù)集群節(jié)點異 構性、作業(yè)執(zhí)行監(jiān)控狀況和資源使用情況動態(tài)調整資源需求的資源調度方法,旨在解決目 前已有資源調度策略導致的集群整體資源利用率低、系統(tǒng)性能差的問題。
[0007] 本發(fā)明提供了一種基于Hadoop多作業(yè)環(huán)境下的資源調度方法,其具體步驟如下:
[0008] (1)實時采集集群負載、Hadoop平臺以及硬件三方監(jiān)控信息,并按照數(shù)據(jù)采集的 先后順序進行存儲,生成三方監(jiān)控輸出反饋文件;
[0009] (2)實時采集集群各計算節(jié)點上用戶的作業(yè)執(zhí)行監(jiān)控信息,生成作業(yè)執(zhí)行監(jiān)控輸 出反饋文件;
[0010] (3)匯總、解析步驟(1)中得出的三方監(jiān)控輸出反饋文件,建模評估節(jié)點的計算能 力,并根據(jù)計算能力評分的高低將集群計算節(jié)點劃分為優(yōu)勢計算節(jié)點和劣勢計算節(jié)點;
[0011] (4)若節(jié)點為優(yōu)勢計算節(jié)點,則根據(jù)步驟(2)中得出的作業(yè)執(zhí)行監(jiān)控輸出反饋文 件啟動基于相似度評估的作業(yè)任務資源需求配置策略;
[0012] (5)若節(jié)點為劣勢計算節(jié)點,則還原為Yarn默認的資源需求配置策略。
[0013] 其中,所述步驟(1)中,集群負載監(jiān)控信息和硬件監(jiān)控信息的采集是通過搭建集 群分布式監(jiān)控系統(tǒng)實現(xiàn),其中集群負載監(jiān)控信息為計算節(jié)點平均負載信息,硬件監(jiān)控信息 包括監(jiān)控周期內節(jié)點cpu、磁盤、內存和網(wǎng)絡平均利用率。
[0014] 進一步地,所述步驟(1)中,計算節(jié)點上自定義的Hadoop平臺監(jiān)控信息項的獲取 是通過在計算框架源碼中植入監(jiān)控代碼實現(xiàn),具體包括計算節(jié)點上多作業(yè)任務執(zhí)行的成功 率、投放新任務的平均等待時間以及任務的平均響應時間。
[0015] 進一步地,所述步驟(1)中,三方監(jiān)控輸出反饋文件中的每一條監(jiān)控數(shù)據(jù)記錄表 示為:
[0016] record = (Host, Monitor_Id, Load_Info, Platform_Info, Hardware_Info)
[0017] 其中,Host表示計算節(jié)點主機名,Monitor_Id表示計算節(jié)點所處監(jiān)控周期的序列 號,Load_Info表示當前時刻計算節(jié)點的負載信息,Platform_Info表示計算節(jié)點在Hadoop 平臺上的自定義監(jiān)控信息,包括多作業(yè)任務執(zhí)行的成功率、投放新任務的平均等待時間以 及任務的平均響應時間,Hardware_Info表示節(jié)點的硬件監(jiān)控信息,包括cpu、內存、網(wǎng)絡和 磁盤平均利用率。
[0018] 進一步地,所述步驟(2)中,用戶的作業(yè)執(zhí)行監(jiān)控信息是通過在計算框架源碼中 內嵌自定義監(jiān)控代碼實現(xiàn),作業(yè)的執(zhí)行監(jiān)控輸出反饋文件中的每一條監(jiān)控記錄表示為如下 格式:
[0019] record = (Job_Id, Host, Monitor_Id, X1, x2, x3, x4, x5, x6, x7, x8, x9)
[0020] 其中,Job_Id表示作業(yè)序列號,Host表示計算節(jié)點主機名,Monitor_Id表示計算 節(jié)點所處的監(jiān)控周期序列號,Xl、x2分別表示該計算節(jié)點對應監(jiān)控周期下作業(yè)執(zhí)行Map任務 map子階段、sort子階段的平均響應時間,x3、x4、x5分別表示該計算節(jié)點對應監(jiān)控周期下作 業(yè)執(zhí)行Reduce任務copy子階段、sort子階段和reduce子階段的平均響應時間,x6、義7分 別表示該計算節(jié)點對應監(jiān)控周期下作業(yè)執(zhí)行Map任務的平均cpu消耗和平均內存消耗,x8、 X9分別表示該計算節(jié)點對應監(jiān)控周期下作業(yè)執(zhí)行Reduce任務的平均cpu消耗和平均內存 消耗。
[0021] 進一步地,所述步驟(2)中,包括生成集群上用戶作業(yè)的歷史執(zhí)行監(jiān)控信息實例 庫,實例庫中保存集群所有作業(yè)在不同計算節(jié)點、不同監(jiān)控周期下的執(zhí)行狀況,即保存有集 群歷史作業(yè)執(zhí)行監(jiān)控輸出反饋文件中的每一項監(jiān)控記錄。
[0022] 進一步地,所述步驟(3)具體包括以下子步驟:
[0023] (3-1)匯總、解析步驟⑴中得出的三方監(jiān)控輸出反饋文件,在線建模計算節(jié)點的 計算能力評分,具體采用以下公式:
[0024]
[0025]
[0026]
[0027] 其中,t表示計算節(jié)點的計算能力評分,??表示集群在當前監(jiān)控周期下負載信息, pw表示在當前監(jiān)控周期下自定義的Hadoop平臺監(jiān)控信息,sue表示計算節(jié)點執(zhí)行任務 的成功率,wait_time表示在該計算節(jié)點投放新任務的平均等待時間,response_time表示 節(jié)點上任務執(zhí)行的平均響應時間,hw表示在當前監(jiān)控周期下節(jié)點的硬件監(jiān)控信息,^11- util、io_util、mem_util、net_util分別表示計算節(jié)點上cpu、磁盤、內存和網(wǎng)絡的平均利 用率,F(xiàn)/』是節(jié)點計算能力評分t關于?1、^三個變量的一個復雜函數(shù);
[0028] (3-2)采用排序函數(shù)對節(jié)點計算能力評分t按照從高到低的順序進行重新排列, 形成計算節(jié)點主機名、監(jiān)控周期序列號和計算能力評分三者之間的映射關系,具體可以通 過以下鍵值對表示:
[0029] (鍵,值)=((Host, Monitor_Id),t)
[0030] 其中,Host表示計算節(jié)點主機名,Monitor_Id表示節(jié)點所在監(jiān)控周期的序列號,t 表示建模得出的節(jié)點計算能力評分;
[0031] (3-3)計算集群節(jié)點計算能力評分均值at,具體公式如下:
[0032]
[0033] 其中,tz表示計算節(jié)點z的計算能力評分,N表示集群計算節(jié)點總個數(shù);
[0034] (3-4)將排序后的前K個節(jié)點判定為集群的優(yōu)勢計算節(jié)點,后(N-K)個節(jié)點判定 為劣勢計算節(jié)點,其中,N表示當前集群所有節(jié)點個數(shù),K表示集群中計算能力評分高于 (|3*at)的計算節(jié)點個數(shù),β取經(jīng)驗值。
[0035] 進一步地,所述步驟(4)具體包括以下子步驟:
[0036] (4-1)初始對各計算節(jié)點上用戶提交的作業(yè)的Map類型任務和Reduce類型任務均 采取Yarn默認的任務資源需求配置策略;
[0037] (4-2)假定當前優(yōu)勢計算節(jié)點為n,待處理的作業(yè)為i,集群所處監(jiān)控周期為Tx,其 歷史相鄰監(jiān)控周期為Ty;
[0038] (4-3)讀取并解析步驟(2)中獲取的作業(yè)執(zhí)行監(jiān)控輸出反饋文件,對記錄進行抽 取、重排,將計算節(jié)點η上的作業(yè)i在當前監(jiān)控周期Tx下對應的執(zhí)行監(jiān)控信息表示為以下 特征向量的形式:
[0039]
[0040] 其中,XnX2分別表示該優(yōu)勢計算節(jié)點上作業(yè)i在監(jiān)控周期T x下執(zhí)行Map任務map 子階段、sort子階段的平均響應時間,x3、x4、X5分別表