一种云计算平台中的异构分布式任务处理系统及其处理方法_2

文档序号:9304476阅读:来源:国知局
rk集群上执行资源的使用状态,依次启动所述任务描 述对象并将其提交到spark集群上。
[0032] 具体的,任务启动器13获取前述待提交任务队列中的各任务描述对象,根据各任 务描述对象的类型以及在待提交任务队列中的顺序和spark集群上执行资源的使用状态, 依次启动各任务描述对象,并将各任务描述对象提交到spark集群的对应节点上。具体为: 当从待提交任务队列中获取的为GPU任务描述对象,则将其提交到spark集群上存在空闲 GHJ资源的节点上,并调用该节点上的GPU程序对GPU任务描述对象进行执行;当从待提交 任务队列中获取的为MPI任务描述对象,则根据MPI任务描述对象中的启动参数,将其提交 到spark集群对应的节点上,并调用该节点上的MPI程序对MPI任务描述对象进行执行;当 从待提交任务队列中获取的为spark任务描述对象,则作为普通任务提交到spark集群中 存在空闲资源的对应节点上,并进行执行。当待提交任务队列中的所有任务均执行完毕后, 记录总的执行时间。
[0033] 实施例二、一种云计算平台中的异构分布式任务处理方法。下面结合图2和图3 对本实施例提供的方法进行详细说明。
[0034] 参见图2,S1、任务加载器读取并加载预先保存的任务描述信息,将所述任务描述 信息生成对应的任务描述对象,并将生成的任务描述对象保存入任务队列中。
[0035] 具体的,任务加载器读取从web前端传入的保存有各任务描述信息的 XML(ExtensibleMarkupLanguage,可扩展标记语言)文件或者从本地描述文件中加载保 存有各任务描述信息的XML文件。任务加载器根据加载的XML文件将其中的任务描述信息 生成对应的任务描述对象,并将生成的任务描述对象按照生成顺序保存入任务队列中。
[0036]S2、任务调度器获取所述任务队列中的任务描述对象,并采用预定调度算法对所 述任务描述对象进行调度排序,生成顺序变化的待提交任务队列。
[0037] 具体的,任务调度器获取所述任务队列中的任务描述对象,判断其任务类型是否 为GPU,若为GPU任务,则放入GPU任务队列中,否则,将其放入CPU任务队列中。分别对GPU 任务队列中的GPU任务和CPU任务队列中的CPU任务采用预定调度算法进行调度排序,生 成待提交GPU任务队列和待提交CPU任务队列。将生成的待提交GPU任务队列和生成的待 提交CPU任务队列合并,得到所述待提交任务队列。其中,任务调度器分别对GPU任务队列 中的GPU任务和CPU任务队列中的CPU任务采用预定调度算法进行调度排序具体为:根据 每一个GPU任务执行所需要的CPU核数以及执行时间估值,对GPU任务队列中的GPU任务 进行调度排序;根据每一个CPU任务执行所需要的CPU核数以及执行时间估值,对CPU任务 队列中的CPU任务进行排序。
[0038]S3、任务启动器获取待提交任务队列中的任务描述对象,并根据待提交队列中任 务描述对象的顺序以及spark集群上执行资源的使用状态,依次启动所述任务描述对象并 将其提交到spark集群上。
[0039] 具体的,任务启动器获取前述待提交任务队列中的各任务描述对象,根据各任务 描述对象的类型以及在待提交任务队列中的顺序和spark集群上执行资源的使用状态,依 次启动各任务描述对象,并将各任务描述对象提交到spark集群的对应节点上。具体为:当 从待提交任务队列中获取的为GPU任务描述对象,则将其提交到spark集群上存在空闲GPU 资源的节点上,并调用该节点上的GPU程序对GPU任务描述对象进行执行;当从待提交任 务队列中获取的为MPI任务描述对象,则根据MPI任务描述对象中的启动参数,将其提交到 spark集群对应的节点上,并调用该节点上的MPI程序对MPI任务描述对象进行执行;当从 待提交任务队列中获取的为spark任务描述对象,则作为普通任务提交到spark集群中存 在空闲资源的对应节点上,并进行执行。当待提交任务队列中的所有任务均执行完毕后,记 录总的执行时间。
[0040] 参见图3,图3为整个工作过程流程图,首先,任务加载器加载预先保存的任务描 述信息,并根据任务描述信息生成对应的任务描述对象,将生成的任务描述对象存放入任 务队列中;然后,任务调度器从任务队列中获取各任务描述对象,并判断各任务描述对象所 属任务类型,当任务描述对象为GPU类型时,将该任务描述对象放入GPU任务队列中,否则, 将任务描述对象放入CPU任务队列中。任务描述对象对GPU任务队列中的GPU任务以及对 CHJ任务队列中的CPU任务按照预定调度算法进行调度排序,得到顺序变化的待提交任务 队列。任务启动器根据待提交队列中任务描述对象的顺序以及spark集群上执行资源的使 用状态,依次启动所述任务描述对象并将其提交到spark集群上,由任务执行器对提交到 spark集群上的各任务描述对象进行执行,并记录总的执行时间。
[0041] 本实施例spark平台下异构任务分布式并行计算基于sparkl. 0. 2版本,操作系统 为CentOS6. 5,Hadoop版本为2. 3. 0,MPI为openMPI,使用的较为稳定的操作系统和软件 版本,保证了软件的兼容性和可扩展性。
[0042] 针对本实施例提供的方法进行了课题研究,比如,GPU程序实例:流场可视化,本 课题采用的GPU计算实例为海洋流场可视化。海洋流场是一个二维矢量场。可视化处理采 用线积分卷积算法(LIC)。使用线积分卷积算法计算流线时,会计算一个微分方程。解微 分方程时,使用四阶龙格库塔算法计算。由于龙格库塔算法是一个迭代算法,需要计算量较 大,因此,可以考虑使用GPU对其加速。
[0043]MPI程序实例:乘潮水位预报,本课题中采用的MPI实例是乘潮水位预报。乘潮水 位预报采用FVC0M数值模型作为其计算模型。有限体积海岸海洋模型(FVC0M)是一种的海 洋数值模型。它是由三角网格组成的。FVC0M模型对岸线地形的数值拟合上拥有的优势以 及对数值的处理上的良好的方法使其能够在海岸地形的地带的海洋数值计算中得到了广 泛应用。该模型已经使用MPI的框架实现了可以使用并行计算加速的版本,可以在共享内 存或者分布式多节点的高性能集群上实现快速并行的数值模拟。
[0044] Spark程序实例:分词统计,本课题采用的Spark实例,是分词统计。这个例子是从 Hadoop时代就使用的数据处理实例。需要被数据是一系列文本数据的集合,从这些文本数 据中分割出大量单词,对数据的处理方式是统计分割出的所有单词出现的次数,并将所有 出现的单词及其出现的次数保存下来。这个例子由于需要被处理的数据相对独立,可以被 并行化处理,并且算法简单,输入的数据量可以很大,因此非常适合用来测试Spark程序。
[0045] 对于在基于spark平台的GPU、MPI并行框架下的任务调度控制,设计了三个方案, 设计方案分别如下:
[0046]方案一:
[0047] 提交3个任务:1个Spark任务,1个MPI任务,1个GPU任务。
[0048] 资源配额:1个四核四线程节点,每个节点上1块NVIDIAGTX660显卡,共有1个 GPU〇
[0049] 任务提交方式:使用三种不同的提交顺序手动提交,进行比较。
[0050]方案二:
[0051] 提交25个任务:10个Spark任务,10个MPI任务,5个GPU任务。
[0052] 资源配额:2个四核四线程节点,每个节点上1块NVIDIAGTX660显卡,共有2个 GPU〇
[0053] 任务提交方式:
[0054] 将任务全部提交到master节点上,对application直接使用先进先出调度算法, 统计全部任务执行结束时,任务运行的总时间。
[0055] 按任务经过改进的application调度算法调度后的顺序提交到master节点上,统 计全部任务执行结束时,任务运行的总时间。
[0056] 方案三:
[0057] 提交50个任务:20个Spark任务,20个MPI任务,10个GPU任务。
[0058] 资源配额:2个四核四线程节点,每个节点上1块NVIDIAGTX660显卡,共有2个 GPU。直接将MPI计算时所需要的数据直接存放到节点的本地磁盘中。
[0059] 任务提交方式:
[0060] 将任务全部提交到master节点上,对application直接使用先进先出调度算法, 统计全部任务执行结束时
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1