● 摘要
Hadoop MapReduce的集群是一个多用户、多作业、多步骤共同分享同一个物理资源的环境。在这个环境中,job之间往往存在竞争关系,我们需要选择出最合适的job发送到集群中去执行。这个被选中的job必须要考虑到多用户之间的公平性,同时必须要保证短作业优先的性质,并且缩短不必要的作业等待时间。同时,task之间是合作的关系,为了确保这一关系,我们需要一个调度策略,在这个调度策略的分配下,所有task的完成的总时间应该是最短的。同时,Hadoop作业的输入数据存放的节点与运行的节点有可能是不同的节点,这样,如何避免不必要的数据传输,以及如何提高集群中各类资源的利用率则成为另外一个重要问题。这些问题都需要由一个高效、合理的调度算法来挑战。由于评价标准众多,用户需求各不相同,所以,如何在一个Hadoop的调度环境中设计一个优秀的调度策略成为了一个极大的挑战。 为了解决以上问题,本文设计了一个Hadoop的二级调度策略。这个策略根据一个精确的成本模型所得出的预测值,利用博弈论的一些基本方法来解决Hadoop集群环境中的调度问题。该调度策略很好的适应了Hadoop调度环境的多级性特点。其中,Job级别使用竞价模型,将每个Job当成可以决策的个体,很好的模拟出Job之间的竞争关系。而将Task级别的调度建模成一个指派问题,在一定的条件约束下,使得目标函数取得最大值,以此来模拟Task之间的合作关系;并选择用匈牙利解法来解这个指派问题。从而在真正意义上找到“等待运行”和“传输数据”的平衡点。 同时,本文设计了3个实验,分别从平均等待时间、数据本地化率、任务整体执行时间三个方面来验证了该调度算法的有效性。
相关内容
相关标签