一种基于作业特征指纹的分布式作业加速运行方法与系统的制作方法

文档序号:9564490阅读:444来源:国知局
一种基于作业特征指纹的分布式作业加速运行方法与系统的制作方法
【技术领域】
[0001]本发明涉及分布式作业方法及系统,特别涉及基于作业特征指纹的分布式作业加速运行方法与系统,用于简化计算机分布式系统作业的调度。
【背景技术】
[0002]现有的分布式作业运行方法中,在用户提交作业后,后端系统会直接根据用户的需求将作业调度到相应的机器上进行运行,分布式作业运行主要步骤有:1.用户指定运行的流程,提交输入参数;2.系统根据输入参数,生成分布式作业的执行计划;3.系统根据执行计划,调度每一步作业实际运行;4.所有作业执行完毕后,输出必要结果。以上的技术方案主要存在以下问题:
[0003]1)对完全相同的作业会进行重复的调度,从而导致重复运行,不仅浪费运算资源,降低运行效率;
[0004]2)不支持断点重跑,也就是说,当某个流程跑到中间某步时因某种原因失败,系统重新提交时,不得不重新调度运行此前已经完成的所有计算,从而增加计算复杂度。

【发明内容】

[0005]有鉴于此,本发明的目的在于提供一种简化计算机分布式系统作业的调度方法,对完全相同的作业不会进行重复的调度,以及提高重复作业的运行效率的加速运行方法。
[0006]基于上述目的一种基于作业特征指纹的分布式作业加速运行方法,输入等待运行的作业后,包括如下步骤:
[0007]1)计算作业的特征指纹;
[0008]1.1)获取所述作业的依赖程序标识串,
[0009]1.2)获取所述作业运行程序参数,
[0010]1.3)将上述获取的作业依赖程序标识串和作业运行程序参数,按照预设进行合并,产生作业的特征指纹,
[0011]2)将所述作业的特征指纹写入历史日志;
[0012]3)根据所述作业的特征指纹,在所述历史日志里搜索具有相同特征指纹的历史作业;
[0013]4)若没有,则继续完成作业。
[0014]更进一步,所述步骤3)中,若搜索到具有相同特征指纹的历史作业,则将所述历史作业的输出结果直接拷贝到所述作业,执行完成。
[0015]更进一步,获取所述作业的程序的标识串的方法为:
[0016]将所述程序标识串和该作业对应的输入表内的所有字符串按照顺序和格式排列,然后合并得到一长字符串;
[0017]或者,通过字符串加密算法对所述长字符串进行映射变形获得作业的程序标识串ο
[0018]更进一步,所述程序的标识串包括:程序列表中全局唯一的数字编号、程序名、或者版本号按照次序和格式合并而成的字符串。
[0019]更进一步,所述运行程序参数包括:输入的程序指令、输入的参数、输入的文件名以及运行环境。
[0020]更进一步,在所述步骤3)中,需要等待述历史作业运行完毕,将所述历史作业的输出结果拷贝给所述的作业,同时跳过该作业的调度和执行,直接结束。
[0021]通过本发明的作业加速运行方法,主要通过计算单个分布式作业的唯一特征标识(在这我们称之为作业特征指纹),并在历史作业候选集合中匹配具有相同特征指纹的作业,最后(即如所述步骤3)中,若搜索到具有相同特征指纹的历史作业,则将所述历史作业的输出结果直接拷贝到所述作业,执行完成)将匹配的作业的运行状态、运行日志、结果数据复制并赋予当前新作业。相比其他的分布式作业运行方式,基于作业特征指纹的分布式作业运行方式节省了重复作业运行的时间,从而提高了作业运行的效率。
[0022]本发明还提出了一种基于作业特征指纹的分布式作业加速运行系统,包括:作业、作业特征指纹计算模块、作业检索模块、数据库、调度执行作业模块、历史结果拷贝模块、计算控制模块,
[0023]所述作业特征指纹计算模块,接收等待运行的作业,用以获取所述作业的依赖程序标识串,获取所述作业运行程序参数,并将所述获取的作业依赖程序标识串和作业运行程序参数,按预设进行合并,产生作业特征指纹后上输入到所述作业检索模块;
[0024]所述作业检索模块,用以根据所述作业特征指纹在所述数据库中的历史日志里搜索具有相同特征指纹的历史作业;
[0025]所述调度执行作业模块,用以在所述作业检索模块中没有相同特征指纹的历史作业时,调度执行所述作业并通过所述计算控制模块完成;
[0026]所述历史结果拷贝模块,用以在搜索到具有相同特征指纹的历史作业时,将所述历史作业的输出结果直接拷贝到所述作业,通过所述计算控制模块执行完成。
[0027]更进一步,还包括:数据储存单元,用以储存所述历史结果拷贝模块中的拷贝结果Ο
[0028]更进一步,所述作业特征指纹计算模块包括:作业的依赖程序采集模块、作业运行程序参数采集模块、作业特征指纹合并模块,所述作业的依赖程序采集模块,用以获取所述作业的依赖程序,所述作业运行程序参数采集模块,用以获取所述作业运行程序参数,所述作业特征指纹合并模块,用以将上述获取的作业依赖程序标识串和作业运行程序参数,按预设进行合并,产生作业特征指纹。
[0029]更进一步,所述在分布式系统上运行时,包括:程序指令、程序版本、运行环境、输入参数和文件多个作业。本发明的有益效果:
[0030]1)本发明首次提出了作业特征指纹的概念,通过获取所述作业的依赖程序,获取所述作业运行程序参数,并将所述获取的作业依赖程序和作业运行程序参数,按预设进行合并,得到作业特征指纹。
[0031]2)本发明通过将所述作业特征指纹应用于分布式任务运行,并简化分布式任务的调度及提高分布式任务运行效率。
[0032]3)本发明通过搜索到具有相同特征指纹的历史作业,则将所述历史作业的输出结果直接拷贝到所述作业,执行完成,大大简化了计算机分布式系统作业的调度。
【附图说明】
[0033]图1(a)_图1 (b)为本发明一实施例中基于作业特征指纹的分布式作业加速运行方法的流程示意图。
[0034]图2为本发明一实施例中基于作业特征指纹的分布式作业加速运行方法运行示例图。
[0035]图3为本发明一实施例中基于作业特征指纹的分布式作业加速运行系统的结构示意图。
【具体实施方式】
[0036]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0037]如图1(a)-图1(b)所示,是本实施例中基于作业特征指纹的分布式作业加速运行方法,输入等待运行的作业后,包括如下步骤:
[0038]1)计算作业的特征指纹;
[0039]1.1)获取所述作业的依赖程序标识串,
[0040]1.2)获取所述作业运行程序参数,
[0041]1.3)将上述获取的作业依赖程序标识串和作业运行程序参数,按照预设进行合并,产生作业的特征指纹,
[0042]2)将所述作业的特征指纹写入历史日志;
[0043]3)根据所述作业的特征指纹,在所述历史日志里搜索具有相同特征指纹的历史作业;
[0044]4)若没有,则继续完成作业。
[0045]上述1)中,首先根据作业中的使用的程序包、算法指令、软件版本、运行容器、输入参数以及输入数据,计算出作业的特征指纹;
[0046]上述2)中,根据计算得到的作业特征指纹,在历史作业中查找出具有相同特征指纹的作业,否则正常调度执行作业;
[0047]更进一步,所述步骤3)中,若搜索到具有相同特征指纹的历史作业,则将所述历史作业的输出结果直接拷贝到所述作业,执行完成。即如果发现,则把2)发现的历史作业的输出结果拷贝给当前作业作为输出,跳过调度运行阶段。更进一步,在所述步骤3)中,需要等待述历史作业运行完毕,将所述历史作业的输出结果拷贝给所述的作业,同时跳过该作业的调度和执行,直接结束。
[0048]在本发明的实施例中,所述的特征指纹是指,一个字符串,能用于区分作业的运行结果,如果两个作业的特征指纹相同,则运行的结果必然一样。作业特征指纹可以是,一个由作业程序的标识串A,作业程序运行参数B,作业程序运行输入数据标识串C,通过将A,B,C进行排列组合,并使用MD5等字符串哈希加密算法,对A,B, C排列组合得到的字符串进行映射变形,最后得到能够唯一标识作业,同时能用于区分作业的运行结果的标示符。例如:假设作业J1使用的程序jar包为job.jar,输入参数为pl,p2,输入数据dl,作业程序的标识串为job.jar的MD5校验值:j_md5,作业运行参数pl,p2,输入数据dl的标识串为dl的MD5校验值d_md5,则将j_md5,pl, p2, d_md5进行排列组合拼接成长字符串,如:j_md5:pl:p2:d_md5,其中,排列组合方式可以又用户自己定义,但所有提交的作业在计算作业特征指纹时,都必须使用同一排列组合方式。最后使用MD5等字符串哈希加密算法将长字符串j_md5:pl:p2:d_md5映射到固定长度的字符串。
[0049]本领域技术人员能够明了,流程是指,用户希望在分布式系统上运行的一整套运算,可以由多个作业组成。作业是指,组成所述流程的每一步计算。作业一般包括:程序指令、程序版本、运行环境(容器)、输入的参数和文件。作业之间有可能有依赖关系,例如必须先完成作业A再完成作业B。作业输入是指,作业程序运行必须输入的参数和数据,只有获得明确的输入,作业才能开始正常运行。不同的输入,会导致运算结果不同。
[0050]更进一步,获取所述作业的程序标识串的方法为:将所述程序标识串和该作业对应的输入表内的所有字符串按照顺序和格式排列,然后合并得到一长字符串,所述的长字符串为程序标识串;或者,通过字符串加密算法对所述长字符串进行映射变形获得作业的程序标识
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1