基于Hama并行计算框架的多层级作业调度算法的研究及实现

2020-09-22 12:24肖坚
读天下 2020年25期

摘 要:Hama的出现弥补了Hadoop平台的不足,不仅仅实现了类似于Hadoop的并行计算,而且在图计算方面也展示出显著的优势。但是因为Hama的应用实践较短,很多的地方还有很大的改善空间。文章重点从基于Hama并行计算框架的多层级作业调度算法设计与实现两方面做全面系统的阐述,提出建议。

关键词:Hama;Hadoop平台;多层级作业调度算法

Hama是一种基于BSP模型的分布式并行计算框架,在大规模科学计算中最为常用。与Hadoop类似,Hama也可以有效屏蔽分布式系统的底层实现细节,可以为用户提供简单易行的API。更重要的一点是,Hama在存储功能设计上可以兼容HBase和HDFS。在系统架构上,Hama采用主-从架构,往往一个Hama集群由一个BSPMaster主节点和若干个GroomServer从节点组成,就现阶段Hama同步过程实现来看,其主要是依靠Zookeeper。Hama作业调度框架设计上,所用的作业调度器是运行于BSPMaster节点之上,而其作业调度器“可插拔”使用则是通过Schedulable和TaskScheduler类接口实现。

一、 基于Hama并行计算框架的多层级作业调度算法的设计

Hama作业调度可以分为两大部分,一是从候选作业队列中选择一个作业,二是对已经选择好的作业进行分配GroomServer,以此来开展相关任务。可以说,这两大部分是Hama作业调度的核心设计内容。文章所提出的基于Hama并行计算框架的多层级作业调度算法包括四大模块,即资源管理、作业选择、任务分配及配置文件管理。

资源管理的作用在于合理将“任务槽”分配给不同的资源容器,以此保证资源可以充分被集群中的各个作业共享。可以将集群中的资源划分为Hama物理集群、作业类型资源池及用户作业等待队列,层级划分方式可以通过配置文件实现有效的监管,兼顾性强。与集群中的资源划分相对应,作业类型资源池的选择策略包括速率策略、轮询策略、公平共享策略及资源利用率策略;用户作业等待队列的选择策略包括速率策略、轮询策略、公平共享策略;作业选择策略包括FIFO策略、小作业优先策略及大作业优先策略。在任务分配策略设计中,文章考虑GroomServer负载水平的任务分配策略—负载均衡策略,这一策略的优势在于可以将节点负荷水平看成节点特征,可以作为作业调度器实现选取GroomServer组合的目的。作业调度器配置设计中文章在其启动时加入了后台线程,以此控制配置文件的更改,如果配置文件发生改动则可以在第一时间进行重新加载,而后根据最新的配置信息对相应的设置加以调整优化。

基于Hama并行计算框架的多层级作业调度算法流程为:集群启动与资源初始化→作业进入等待队列(具体流程见图1)→多层级作业调度算法作业选择流程(具体流程见图2)→挑选合适的GroomServer组合,并分配到具体的GroomServer中去执行→分配具体的执行节点,发送至每一个GroomServer节点,生成指令→指令发送至各个GroomServer,执行具体任务。

二、 基于Hama并行计算框架的多层级作业调度算法的实现

Hama多层级作业调度算法的实现基于Hama0.6.3之上,同时利用Java实现语言开发,作业调度器热插拔接口采用Schedulable。本次设计实现过程中对作业等待队列采用公平共享策略,资源选择策略采用轮询策略,作业选择策略次用FIFO策略和最大作用优先策略。在具体实现上主要从作业调度流程管理、资源管理、配置文件监听等方面针对性实现。

在作业调度流程管理实现中,将MultiLayerScheduler作为作业调度组织者和调度流程的管理者,并将其作为整个算法的核心加以优化管理。所应用的方法包括四类,即start、terminate、getJobs、findJobById。需要明确的一点是,Hama中的任务分配策略注册于JobInProgress类,这与作业调度器注册相类似。资源管理类包括ResourcesManager类、WaitingQueue类、ResourcesPool类,ResourcesManager類是整个集群资源的管理者,资源管理工作均由其完成。WaitingQueue可以实现维护内部作业等待队列的作用。ResourcesPool类不单单具有维护内部作业等待队列的作用,且有维护资源池各种限制条件的作用。在配置文件监听实现方面,其动态修改依靠ResourcesManage类和ConfigurationFileMonitor类共同实现,ConfigurationFileMonitor类主要负责配置文件的更改监控,ResourcesManage主要负责配置文件重新加载及修改等待队列等任务。

三、 结语

Hama并行计算框架还有很大的完善空间,多层级作业调度算法可以有效提升Hama集群资源的利用能力,同时可以提升整个作业调度的灵活性。但是值得注意的一点是,该算法在任务分配策略上还需要大力改进,增加更多的任务分配策略至关重要。

参考文献:

[1]赵博颖,肖鹏,张力.基于混合并行布谷鸟搜索的作业调度算法[J].计算机工程与设计,2019,40(3):719-724.

[2]李安民,计卫星,廖心怡,等.一种面向异构计算的结构化并行编程框架[J].计算机工程与科学,2019,41(3):424-432.

作者简介:

肖坚,湖南省长沙市,湖南外贸职业学院。