摘?要:Hama的出現(xiàn)彌補了Hadoop平臺的不足,不僅僅實現(xiàn)了類似于Hadoop的并行計算,而且在圖計算方面也展示出顯著的優(yōu)勢。但是因為Hama的應(yīng)用實踐較短,很多的地方還有很大的改善空間。文章重點從基于Hama并行計算框架的多層級作業(yè)調(diào)度算法設(shè)計與實現(xiàn)兩方面做全面系統(tǒng)的闡述,提出建議。
關(guān)鍵詞:Hama;Hadoop平臺;多層級作業(yè)調(diào)度算法
Hama是一種基于BSP模型的分布式并行計算框架,在大規(guī)??茖W(xué)計算中最為常用。與Hadoop類似,Hama也可以有效屏蔽分布式系統(tǒng)的底層實現(xiàn)細節(jié),可以為用戶提供簡單易行的API。更重要的一點是,Hama在存儲功能設(shè)計上可以兼容HBase和HDFS。在系統(tǒng)架構(gòu)上,Hama采用主-從架構(gòu),往往一個Hama集群由一個BSPMaster主節(jié)點和若干個GroomServer從節(jié)點組成,就現(xiàn)階段Hama同步過程實現(xiàn)來看,其主要是依靠Zookeeper。Hama作業(yè)調(diào)度框架設(shè)計上,所用的作業(yè)調(diào)度器是運行于BSPMaster節(jié)點之上,而其作業(yè)調(diào)度器“可插拔”使用則是通過Schedulable和TaskScheduler類接口實現(xiàn)。
一、 基于Hama并行計算框架的多層級作業(yè)調(diào)度算法的設(shè)計
Hama作業(yè)調(diào)度可以分為兩大部分,一是從候選作業(yè)隊列中選擇一個作業(yè),二是對已經(jīng)選擇好的作業(yè)進行分配GroomServer,以此來開展相關(guān)任務(wù)??梢哉f,這兩大部分是Hama作業(yè)調(diào)度的核心設(shè)計內(nèi)容。文章所提出的基于Hama并行計算框架的多層級作業(yè)調(diào)度算法包括四大模塊,即資源管理、作業(yè)選擇、任務(wù)分配及配置文件管理。
資源管理的作用在于合理將“任務(wù)槽”分配給不同的資源容器,以此保證資源可以充分被集群中的各個作業(yè)共享??梢詫⒓褐械馁Y源劃分為Hama物理集群、作業(yè)類型資源池及用戶作業(yè)等待隊列,層級劃分方式可以通過配置文件實現(xiàn)有效的監(jiān)管,兼顧性強。與集群中的資源劃分相對應(yīng),作業(yè)類型資源池的選擇策略包括速率策略、輪詢策略、公平共享策略及資源利用率策略;用戶作業(yè)等待隊列的選擇策略包括速率策略、輪詢策略、公平共享策略;作業(yè)選擇策略包括FIFO策略、小作業(yè)優(yōu)先策略及大作業(yè)優(yōu)先策略。在任務(wù)分配策略設(shè)計中,文章考慮GroomServer負載水平的任務(wù)分配策略—負載均衡策略,這一策略的優(yōu)勢在于可以將節(jié)點負荷水平看成節(jié)點特征,可以作為作業(yè)調(diào)度器實現(xiàn)選取GroomServer組合的目的。作業(yè)調(diào)度器配置設(shè)計中文章在其啟動時加入了后臺線程,以此控制配置文件的更改,如果配置文件發(fā)生改動則可以在第一時間進行重新加載,而后根據(jù)最新的配置信息對相應(yīng)的設(shè)置加以調(diào)整優(yōu)化。
基于Hama并行計算框架的多層級作業(yè)調(diào)度算法流程為:集群啟動與資源初始化→作業(yè)進入等待隊列(具體流程見圖1)→多層級作業(yè)調(diào)度算法作業(yè)選擇流程(具體流程見圖2)→挑選合適的GroomServer組合,并分配到具體的GroomServer中去執(zhí)行→分配具體的執(zhí)行節(jié)點,發(fā)送至每一個GroomServer節(jié)點,生成指令→指令發(fā)送至各個GroomServer,執(zhí)行具體任務(wù)。
二、 基于Hama并行計算框架的多層級作業(yè)調(diào)度算法的實現(xiàn)
Hama多層級作業(yè)調(diào)度算法的實現(xiàn)基于Hama0.6.3之上,同時利用Java實現(xiàn)語言開發(fā),作業(yè)調(diào)度器熱插拔接口采用Schedulable。本次設(shè)計實現(xiàn)過程中對作業(yè)等待隊列采用公平共享策略,資源選擇策略采用輪詢策略,作業(yè)選擇策略次用FIFO策略和最大作用優(yōu)先策略。在具體實現(xiàn)上主要從作業(yè)調(diào)度流程管理、資源管理、配置文件監(jiān)聽等方面針對性實現(xiàn)。
在作業(yè)調(diào)度流程管理實現(xiàn)中,將MultiLayerScheduler作為作業(yè)調(diào)度組織者和調(diào)度流程的管理者,并將其作為整個算法的核心加以優(yōu)化管理。所應(yīng)用的方法包括四類,即start、terminate、getJobs、findJobById。需要明確的一點是,Hama中的任務(wù)分配策略注冊于JobInProgress類,這與作業(yè)調(diào)度器注冊相類似。資源管理類包括ResourcesManager類、WaitingQueue類、ResourcesPool類,ResourcesManager類是整個集群資源的管理者,資源管理工作均由其完成。WaitingQueue可以實現(xiàn)維護內(nèi)部作業(yè)等待隊列的作用。ResourcesPool類不單單具有維護內(nèi)部作業(yè)等待隊列的作用,且有維護資源池各種限制條件的作用。在配置文件監(jiān)聽實現(xiàn)方面,其動態(tài)修改依靠ResourcesManage類和ConfigurationFileMonitor類共同實現(xiàn),ConfigurationFileMonitor類主要負責(zé)配置文件的更改監(jiān)控,ResourcesManage主要負責(zé)配置文件重新加載及修改等待隊列等任務(wù)。
三、 結(jié)語
Hama并行計算框架還有很大的完善空間,多層級作業(yè)調(diào)度算法可以有效提升Hama集群資源的利用能力,同時可以提升整個作業(yè)調(diào)度的靈活性。但是值得注意的一點是,該算法在任務(wù)分配策略上還需要大力改進,增加更多的任務(wù)分配策略至關(guān)重要。
參考文獻:
[1]趙博穎,肖鵬,張力.基于混合并行布谷鳥搜索的作業(yè)調(diào)度算法[J].計算機工程與設(shè)計,2019,40(3):719-724.
[2]李安民,計衛(wèi)星,廖心怡,等.一種面向異構(gòu)計算的結(jié)構(gòu)化并行編程框架[J].計算機工程與科學(xué),2019,41(3):424-432.
作者簡介:
肖堅,湖南省長沙市,湖南外貿(mào)職業(yè)學(xué)院。