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