柴炎 鄭海賓 朱宏梁 張宇 天津工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院
MapReduce作業(yè)的整個(gè)生命周期可分為以下六個(gè)步驟進(jìn)行:①提交作業(yè):當(dāng)作業(yè)得到提交之后,HDFS需要對(duì)作業(yè)的分片元信息文件、配置文件等進(jìn)行收集,在這個(gè)過(guò)程中主要由JobClient完成。當(dāng)HDFS對(duì)相關(guān)文件收集成功時(shí),會(huì)下發(fā)通知予以提醒。②作業(yè)初始化:在上述過(guò)程完成后,作業(yè)還需要進(jìn)一步優(yōu)化,這個(gè)階段由作業(yè)調(diào)度模塊作用,并交于JobInProgress進(jìn)行運(yùn)行記錄。③任務(wù)調(diào)度與監(jiān)控。JobTracker既控制任務(wù)調(diào)度又能完成監(jiān)控,并能夠及時(shí)反映出節(jié)點(diǎn)資源的使用狀態(tài)。在作業(yè)調(diào)度的過(guò)程中資源轉(zhuǎn)移可分為幾個(gè)狀態(tài)進(jìn)行分類(lèi)分析,一是任務(wù)失敗的情況,JobTracker將對(duì)任務(wù)進(jìn)行轉(zhuǎn)移操作;二是存在資源閑置的情況下,JobTracker將依托于任務(wù)調(diào)度器的調(diào)度策略,以此對(duì)資源進(jìn)行重新的分配;三是在某任務(wù)進(jìn)行中進(jìn)度明顯低于其他作業(yè)的任務(wù),這種情況下需要進(jìn)行補(bǔ)救措施,即啟動(dòng)相同的任務(wù),最終取最短時(shí)間作為最終結(jié)果。④任務(wù)運(yùn)行環(huán)境準(zhǔn)備:經(jīng)TaskTracker的作用實(shí)現(xiàn)資源隔離,并對(duì)JVM進(jìn)行啟動(dòng)操作。在這個(gè)過(guò)程中對(duì)于不同的TASK而言對(duì)應(yīng)的JVM需要保持一定的獨(dú)立,目的是為了避免出現(xiàn)任務(wù)干擾的情況發(fā)生。⑤執(zhí)行任務(wù):在上述步驟順利進(jìn)行后,任務(wù)將被執(zhí)行。⑥作業(yè)完成:每個(gè)步驟完成時(shí)都會(huì)出現(xiàn)對(duì)應(yīng)的標(biāo)志予以提醒。
經(jīng)過(guò)許多年的發(fā)展,F(xiàn)IFO已經(jīng)相對(duì)比較完善,成為了眾多計(jì)算機(jī)信息數(shù)據(jù)運(yùn)算的重要方式。Hadoop中比較常用的就是FIFO,在這種技術(shù)誕生之初,應(yīng)用的場(chǎng)景是一些日志挖掘等,展現(xiàn)出了極強(qiáng)的優(yōu)勢(shì)。在這種調(diào)度算法中,會(huì)有大量數(shù)據(jù)在不同的時(shí)間傳入堆棧內(nèi),并且不同類(lèi)型的數(shù)據(jù)的處理優(yōu)先程度是具有一定差別的,因此內(nèi)部的Job Tracker會(huì)根據(jù)這些實(shí)際信息決定相應(yīng)的處理方式,完成調(diào)度工作。其中一種調(diào)度器能夠?qū)τ脩?hù)提交的作業(yè)進(jìn)行初始化操作,這一過(guò)程中需要嚴(yán)格按照優(yōu)先級(jí)進(jìn)行,優(yōu)先級(jí)是傳入的信息中已經(jīng)帶有的,優(yōu)先級(jí)越高,則處理時(shí)會(huì)自動(dòng)排到處理序列前面。如果是優(yōu)先級(jí)一致,就需要根據(jù)信息傳入的時(shí)間進(jìn)行選擇。另外一種調(diào)度器的主要作用是為了能夠確保調(diào)度順序的合理性,并對(duì)實(shí)際作業(yè)信息處理的過(guò)程進(jìn)行高效監(jiān)聽(tīng)。相對(duì)來(lái)說(shuō),F(xiàn)IFO調(diào)度算法的作用是比較單一的,存在著一定的局限性,因此在面對(duì)大量的集群共享過(guò)程時(shí),往往會(huì)存在調(diào)度性能無(wú)法有效發(fā)揮的情況。在一些特定情況下甚至?xí)绊懙秸麄€(gè)處理工作的效果。
先進(jìn)先出調(diào)度算法能夠很好的克服FIFO算法存在的一些缺陷,展現(xiàn)出自身獨(dú)有的優(yōu)勢(shì)。能夠使得多個(gè)處理作業(yè)過(guò)程同時(shí)進(jìn)行,使得整個(gè)處理工作的效率大大提升,實(shí)現(xiàn)對(duì)相關(guān)資源的高效利用。但是目前這種調(diào)度算法的應(yīng)用相對(duì)于FIFO來(lái)說(shuō)比較少,因?yàn)檫@種調(diào)度算法存在著一些特定的缺陷,影響到其工作性能。比如說(shuō),先進(jìn)先出調(diào)度算法會(huì)輕易陷入局部最優(yōu)的陷阱,不能夠在全局中找到合理的解。那么在實(shí)際應(yīng)用中就無(wú)法得到有效應(yīng)用。面對(duì)一些需要?jiǎng)討B(tài)設(shè)置算法的應(yīng)用場(chǎng)合,這種調(diào)度算法也不能夠很好的適應(yīng),僅僅能夠在靜止?fàn)顟B(tài)發(fā)揮作用。在進(jìn)行相應(yīng)的參數(shù)設(shè)置時(shí),需要對(duì)目標(biāo)作業(yè)集群的一些基本信息進(jìn)行提前了解,使得工作量大大增減,并且存在一些不確定性,已經(jīng)在實(shí)際應(yīng)用中展現(xiàn)出了其缺陷。
關(guān)于自適應(yīng)調(diào)度的基本概念,主要是建立在不同工作方式的優(yōu)先級(jí)條件之下,對(duì)能力要求、資源要求、時(shí)間要求等進(jìn)行動(dòng)態(tài)的平衡。在這個(gè)過(guò)程中調(diào)度間隔需要依托于更優(yōu)的任務(wù)序列以此保證各項(xiàng)工作的順利進(jìn)行。目前來(lái)看調(diào)度方式多種多樣,自適應(yīng)調(diào)度由于自身的特點(diǎn)所在,是最靈活的一種調(diào)度方式。
自適應(yīng)調(diào)度算法的智能性質(zhì)比較明顯,能夠根據(jù)一些設(shè)定的參數(shù)進(jìn)行尋優(yōu)??梢詮淖鳂I(yè)提交、分類(lèi)、過(guò)載判斷以及作業(yè)完成時(shí)間進(jìn)行入手研究。一般在作業(yè)提交時(shí),就會(huì)有大量的自適應(yīng)調(diào)度算法可以使用的信息,包括一些設(shè)置完成時(shí)間以及相應(yīng)的其他參數(shù)等。過(guò)載模塊一般都會(huì)使用節(jié)點(diǎn)特征。在等待作業(yè)的過(guò)程中,有可能會(huì)出現(xiàn)過(guò)載的情況,這樣就使得進(jìn)程受阻,因此就需要通過(guò)過(guò)載判斷模塊來(lái)對(duì)節(jié)點(diǎn)的資源情況進(jìn)行了解,并作出相應(yīng)的判斷。關(guān)于作業(yè)完成實(shí)踐,需要能夠選擇期望值最大的作業(yè),最終根據(jù)實(shí)際情況進(jìn)行作業(yè)分配。
為了能夠使自適應(yīng)調(diào)度算法能夠發(fā)揮出更好的作用,就需要對(duì)其進(jìn)行優(yōu)化。在實(shí)際優(yōu)化過(guò)程中,最好是能夠?qū)π枰幚淼墓ぷ髁窟M(jìn)行預(yù)測(cè),以此來(lái)根據(jù)作業(yè)的優(yōu)先級(jí)設(shè)定來(lái)進(jìn)行資源調(diào)配。在有些特定的情況下,會(huì)出現(xiàn)一些處理作業(yè)數(shù)據(jù)出錯(cuò)的情況,或者是因?yàn)樽鳂I(yè)量過(guò)大,因此無(wú)法在短時(shí)間內(nèi)進(jìn)行解決。調(diào)度機(jī)處理工作的效率有限,可能會(huì)被一些經(jīng)過(guò)長(zhǎng)時(shí)間處理但是沒(méi)有解決的作業(yè)占用,那么就無(wú)法對(duì)其他優(yōu)先級(jí)比較高的作業(yè)及時(shí)進(jìn)行處理。因此在進(jìn)行優(yōu)化的過(guò)程中,也需要為作業(yè)設(shè)置更加合理的優(yōu)先級(jí)。
綜上所述,現(xiàn)有調(diào)度算法在自適應(yīng)性方面還存在一些不足之處,本文提出了一種自適應(yīng)調(diào)度算法的優(yōu)化框架,以期能夠促進(jìn)幼兒拓展輔助軟硬件平臺(tái)更順暢的運(yùn)行。在自適應(yīng)調(diào)度算法進(jìn)行優(yōu)化之后響應(yīng)時(shí)間明顯縮短,且在動(dòng)態(tài)變化時(shí)有著更強(qiáng)的適應(yīng)性,大大提升了幼兒個(gè)性化挖掘的效率。