◎肖堅(jiān)
大數(shù)據(jù)時(shí)代已經(jīng)來臨,眾多企業(yè)及科研機(jī)構(gòu)都在研究大數(shù)據(jù)的應(yīng)用價(jià)值。作為開源的分布式云計(jì)算平臺(tái),Hadoop 是當(dāng)前眾多企業(yè)開發(fā)云計(jì)算平臺(tái)中所選擇的主要框架。通過對(duì)Hadoop 框架的改進(jìn),基本能夠處理海量的數(shù)據(jù)信息,在實(shí)際運(yùn)用中有著很好的應(yīng)用效果。隨著Hadoop應(yīng)用越來越廣泛,其中也存在一定的問題需要解決。當(dāng)前,Hadoop 中的三種調(diào)度算法更適合在同構(gòu)計(jì)算機(jī)集群上的使用,而在異構(gòu)集群中,相應(yīng)的調(diào)度能力就有所降低。針對(duì)這一問題,可以采用基于資源感知的作業(yè)調(diào)度算法,可以有效解決異構(gòu)集群調(diào)度性能問題,進(jìn)一步提升系統(tǒng)的資源利用率。
2004 年谷歌發(fā)表了兩篇論述MapReduce 框架以及Google 文件系統(tǒng)(GFS),Doug Cutting 認(rèn)識(shí)到這兩篇論文內(nèi)容可以應(yīng)用于Nutch 中,經(jīng)過他與團(tuán)隊(duì)的研究,最終設(shè)計(jì)完成一個(gè)可以充實(shí)兩種網(wǎng)絡(luò)狂戰(zhàn)所需的技術(shù),Hadoop。作為一個(gè)開源、可擴(kuò)展、可靠的分布式計(jì)算平臺(tái),Hadoop 能夠處理海量的數(shù)據(jù)集。與其他分布式計(jì)算相比,Hadoop 的使用更加的方便、簡(jiǎn)單且高效。而且Hadoop 還能在一臺(tái)很普通的PC 上運(yùn)行,對(duì)PC 硬件的要求不高,因此與其他分布式計(jì)算相比,Hadoop 還有著低成本優(yōu)勢(shì)。
通常在Hadoop 系統(tǒng)中作業(yè)進(jìn)行調(diào)度的算法一般會(huì)默認(rèn)為FIFO 算法。在用戶提交相應(yīng)的作業(yè)之后,系統(tǒng)會(huì)根據(jù)左右的優(yōu)先級(jí)情況來進(jìn)行調(diào)度,如果作業(yè)優(yōu)先級(jí)處于同一等級(jí),就會(huì)根據(jù)提交時(shí)間按照先后順序來進(jìn)行調(diào)度。如果提交的時(shí)間也相同,則根據(jù)作業(yè)名稱的大小來進(jìn)行調(diào)度。與其他算法相比,F(xiàn)IFO 調(diào)度算法比較簡(jiǎn)單,但對(duì)用戶作業(yè)需求差異缺乏考慮,處理作業(yè)時(shí)間較長(zhǎng),計(jì)算資源被占用的情況下,很容易造成其他用戶作業(yè)不能被及時(shí)的處理。相對(duì)來講,采用FIFO 調(diào)度算法,對(duì)系統(tǒng)資源的利用率比較低。
Fair 調(diào)度算法的主要目標(biāo)就是為用戶提供一個(gè)能夠共享云平臺(tái)集群的方式,從而實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)資源利用效率的提升。采用Fair 調(diào)度算法將相應(yīng)的資源分配到各個(gè)不同的資源池中,不同的用戶擁有不同的資源池,通過這一算法能夠有效保證每個(gè)用戶資源池獲得最小的共享資源。如果某一用戶資源池在較長(zhǎng)的時(shí)間內(nèi)未能獲得相應(yīng)的資源,則該資源池會(huì)以搶占的方式獲得資源。通過搶占的方式,能夠有效解決FIFO 調(diào)度算法中,某一用戶資源池作業(yè)過程中長(zhǎng)時(shí)間無法獲取資源的問題。
采用Capacity 調(diào)度算法與Fair 調(diào)度算法一樣,主要目標(biāo)都是提升系統(tǒng)資源的利用效率。Capacity 調(diào)度算法運(yùn)行中會(huì)將資源根據(jù)一定的比例來分配給不同的作業(yè)隊(duì)列,而且會(huì)嚴(yán)格限制作業(yè)的調(diào)度情況,以免出現(xiàn)用戶或作業(yè)隊(duì)列獨(dú)占資源問題。在核心調(diào)度策略以及對(duì)內(nèi)存的限制方面,Capacity 調(diào)度算法與Fair 調(diào)度算法有著本質(zhì)的不同。Capacity 調(diào)度算法的調(diào)度策略中,會(huì)首先選擇對(duì)資源占用較少的隊(duì)列,然后再根據(jù)作業(yè)優(yōu)先級(jí)來進(jìn)行資源分配,同時(shí)在對(duì)作業(yè)進(jìn)行選擇時(shí),會(huì)充分考慮到不同作業(yè)對(duì)內(nèi)存的需求情況。
在Hadoop 調(diào)度算法研究中,其核心研究?jī)?nèi)容是對(duì)計(jì)算資源分配方式的研究。調(diào)度算法設(shè)計(jì)通常要根據(jù)所采用的計(jì)算資源分配方式來設(shè)計(jì)。有些調(diào)度算法設(shè)計(jì),主要考慮的是不同作業(yè)的優(yōu)先級(jí)。有的則根據(jù)計(jì)算節(jié)點(diǎn)的計(jì)算能力來設(shè)計(jì)調(diào)度算法。為解決Hadoop 調(diào)度算法在異構(gòu)集群中的計(jì)算性能問題,可以設(shè)計(jì)基于資源感知的作業(yè)調(diào)度算法。對(duì)異構(gòu)集群中每個(gè)異構(gòu)節(jié)點(diǎn)的計(jì)算性能以及所處理的整個(gè)作業(yè)的數(shù)據(jù)量,還有不同作業(yè)計(jì)算任務(wù)之間的差異性充分考量之后,來設(shè)計(jì)基于資源感知的作業(yè)調(diào)度算法。在這一算法設(shè)計(jì)中,充分運(yùn)用了工程化以及系統(tǒng)論思想,符合實(shí)際需求以及應(yīng)用。
首先按照對(duì)計(jì)算節(jié)點(diǎn)性能、作業(yè)處理數(shù)據(jù)量以及計(jì)算任務(wù)的差異化感知來計(jì)算合理度值。為實(shí)現(xiàn)最佳分配可以在基于資源感知的作業(yè)調(diào)度算法中,通過輸入相關(guān)數(shù)值,經(jīng)過計(jì)算后輸出最大合理度值,得到最佳分配方案?;谫Y源感知的調(diào)度算法,可以確定每個(gè)輪轉(zhuǎn)周期中不同作業(yè)所要調(diào)度的任務(wù)數(shù),且基于資源感知的調(diào)度,可以確保在每一個(gè)輪轉(zhuǎn)周期中實(shí)現(xiàn)最優(yōu)的調(diào)度方案。通過對(duì)基于資源感知調(diào)度算法的應(yīng)用,能夠充分發(fā)揮異構(gòu)計(jì)算集群的整體性能,還能更加高效、快捷的執(zhí)行完所有的作業(yè),在減少對(duì)計(jì)算資源開銷的同時(shí),也能獲得用戶認(rèn)可,提高作用用戶的滿意度。
隨著大數(shù)據(jù)時(shí)代的到來,Hadoop 云平臺(tái)的應(yīng)用越來越廣泛。通過對(duì)Hadoop中三種調(diào)度算法的分析,可以了解到,采用不同的調(diào)度算法,對(duì)云平臺(tái)計(jì)算資源的利用方式及效率就會(huì)有所不同。當(dāng)前Hadoop 中三種調(diào)度算法在異構(gòu)集群計(jì)算中調(diào)度能力不足,因此為進(jìn)一步提升Hadoop 調(diào)度計(jì)算能力,可以采用Hadoop 云平臺(tái)下基于資源感知的作業(yè)調(diào)度算法,可以有效解決異構(gòu)集群計(jì)算調(diào)度能力不足問題,并實(shí)現(xiàn)對(duì)計(jì)算資源的利用率的有效提升。