CN104461721B - 工作流的调用方法和装置 - Google Patents

工作流的调用方法和装置 Download PDF

Info

Publication number
CN104461721B
CN104461721B CN201410767950.7A CN201410767950A CN104461721B CN 104461721 B CN104461721 B CN 104461721B CN 201410767950 A CN201410767950 A CN 201410767950A CN 104461721 B CN104461721 B CN 104461721B
Authority
CN
China
Prior art keywords
shell scripts
sub
calling
shell
return value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410767950.7A
Other languages
English (en)
Other versions
CN104461721A (zh
Inventor
谢宁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201410767950.7A priority Critical patent/CN104461721B/zh
Publication of CN104461721A publication Critical patent/CN104461721A/zh
Application granted granted Critical
Publication of CN104461721B publication Critical patent/CN104461721B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种工作流的调用方法和装置。其中,该工作流的调用方法包括:在主Shell脚本中设置多个子Shell脚本的调用方式;获取多个子Shell脚本对应的Hadoop作业;按照调用方式调用多个子Shell脚本以执行Hadoop作业,直至多个子Shell脚本调用完毕,得到调用结果,其中,调用结果包括第一结果和第二结果;在调用结果为第一结果时,执行第一Hadoop作业;以及在调用结果为第二结果时,执行第二Hadoop作业。通过本发明,解决了现有技术中单独安装工作流工具在执行时占用大量内存的问题,达到了减少工作流调用所占用的内存的效果。

Description

工作流的调用方法和装置
技术领域
本发明涉及互联网领域,具体而言,涉及一种工作流的调用方法和装置。
背景技术
随着大数据分析的广泛应用,很多数据分析需要在大数据计算平台上进行,例如,Hadoop。基于这些计算平台的计算作业,有些需要并行执行,有些需要顺序执行,这就需要有一个方法来调用这些计算作业,以按照需要的方式来执行计算作业。
目前调用工作流在调用时可以采用oozie和Azkaban等专业的工作流调用工具,但是,这些工具都需要单独安装且配置复杂,运行时占用内存。
针对现有技术中单独安装工作流工具在执行时占用大量内存的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种工作流的调用方法和装置,以解决现有技术中单独安装工作流调用工作时占用内存的问题。
为了实现上述目的,根据本发明实施例的一个方面,提供了一种工作流的调用方法。根据本发明的工作流的调用方法包括:在主Shell脚本中设置多个子Shell脚本的调用方式;获取所述多个子Shell脚本对应的Hadoop作业;按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果,其中,所述调用结果包括第一结果和第二结果;在所述调用结果为所述第一结果时,执行第一Hadoop作业;以及在所述调用结果为所述第二结果时,执行第二Hadoop作业。
进一步地,所述调用方式为并行调用,按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果包括:并行调用所述多个子Shell脚本,并记录每个子Shell脚本的返回值;判断所述多个子Shell脚本是否已经调用完毕;如果所述多个子Shell脚本已经调用完毕,则读取所述每个子Shell脚本的返回值;对所述多个子Shell脚本的返回值进行计算,得到调用结果。
进一步地,判断所述多个子Shell脚本是否已经调用完毕包括:将所述每个子Shell脚本的进程标识写入临时文件中;判断所述多个子Shell脚本中的第一子Shell脚本是否已经执行完毕;如果判断出所述第一子Shell脚本已经执行完毕,则删除所述临时文件中的所述第一子Shell脚本的进程标识;判断所述临时文件中所述子Shell脚本是否已经都被删除;如果所述临时文件中的所述子Shell脚本都已经被删除,则确定所述多个子Shell脚本已经调用完毕。
进一步地,所述调用方式为顺序调用,按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果包括:获取所述主Shell脚本中的当前子Shell脚本;执行所述当前子Shell脚本,得到返回值;判断所述返回值为第一返回值或者第二返回值;如果所述返回值为第一返回值,则调用第一分支Shell脚本;以及如果所述返回值为第二返回值,则调用第二分支Shell脚本。
进一步地,在按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果之前,所述方法还包括:将所述主Shell脚本加入到crontab服务中以定时调用所述主Shell脚本。
为了实现上述目的,根据本发明实施例的另一方面,提供了一种工作流的调用装置。根据本发明的工作流的调用装置包括:设置单元,用于在主Shell脚本中设置多个子Shell脚本的调用方式;获取单元,用于获取所述多个子Shell脚本对应的Hadoop作业;调用单元,用于按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果,其中,所述调用结果包括第一结果和第二结果;执行单元,用于在所述调用结果为所述第一结果时,执行第一Hadoop作业;以及在所述调用结果为所述第二结果时,执行第二Hadoop作业。
进一步地,所述调用方式为并行调用,所述调用单元包括:第一调用模块,用于并行调用所述多个子Shell脚本,并记录每个子Shell脚本的返回值;判断模块,用于判断所述多个子Shell脚本是否已经调用完毕;读取模块,用于在所述多个子Shell脚本已经调用完毕时,读取所述每个子Shell脚本的返回值;计算模块,用于对所述多个子Shell脚本的返回值进行计算,得到调用结果。
进一步地,所述判断模块包括:写入子模块,用于将所述每个子Shell脚本的进程标识写入临时文件中;第一判断子模块,用于判断所述多个子Shell脚本中的第一子Shell脚本是否已经执行完毕;删除子模块,用于在判断出所述第一子Shell脚本已经执行完毕时,删除所述临时文件中的所述第一子Shell脚本的进程标识;第二判断子模块,用于判断所述临时文件中所述子Shell脚本是否已经都被删除;确定子模块,用于在所述临时文件中的所述子Shell脚本都已经被删除时,确定所述多个子Shell脚本已经调用完毕。
进一步地,所述调用方式为顺序调用,所述调用单元包括:获取模块,用于获取所述主Shell脚本中的当前子Shell脚本;执行模块,用于执行所述当前子Shell脚本,得到返回值;判断模块,用于判断所述返回值为第一返回值或者第二返回值;第二调用模块,用于在所述返回值为第一返回值时,调用第一分支Shell脚本;以及在所述返回值为第二返回值时,调用第二分支Shell脚本。
进一步地,所述装置还包括:定时单元,用于在按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果之前,将所述主Shell脚本加入到crontab服务中以定时调用所述主Shell脚本。
根据发明实施例,通过Linux系统中的Shell脚本设置工作流,一个主Shell脚本可以调用多个子Shell脚本,每个子Shell脚本执行对应的Hadoop作业,并且在主Shell脚本中还设置有多个子Shell脚本的调用,也就实现了工作流的调用,从而解决了现有技术中单独安装工作流调用工作时占用内存的问题,达到了减少工作流调用所占用的内存的效果。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的工作流的调用方法的流程图;
图2是根据本发明实施例的执行子Shell脚本的流程图;
图3是根据本发明实施例的主Shell脚本中多个子Shell脚本顺序调用的流程图;
图4是根据本发明实施例的主Shell脚本中多个子Shell脚本并行调用的流程图;
图5是根据本发明实施例的判断多个子Shell脚本调用完毕的流程图;以及
图6是根据本发明实施例的工作流的调用装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
名词解释:
Hadoop:是一个开源的分布式大数据计算平台。
Shell:为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。它是用户使用Linux的桥梁,系统管理员可以通过shell脚本批量执行命令,管理服务器。
Hadoop工作流:是由多个hadoop作业组成有先后顺序的作业流。
本发明实施例提供了一种工作流的调用方法。该工作流的调用方法可以直接利用Linux系统中的Shell脚本来执行简易的工作流,而无需单独安装工作流工具来调度Hadoop作业,不仅避免安装工作流工具的繁琐,还能减少工作流工具的内存占用,从而解决了现有技术中单独安装工作流工具执行调度工作时占用内存的问题。
图1是根据本发明实施例的工作流的调用方法的流程图。如图1所示,该工作流的调用方法包括如下步骤:
步骤S102,在主Shell脚本中设置多个子Shell脚本的调用方式。
一个主Shell脚本包括多个子Shell脚本,并记录了多个子Shell脚本的调用方式,例如,主Shell脚本中的子Shell脚本顺序调用或者并行调用。在脚本的调用方式为顺序调用时,主Shell脚本还可以设定多个子Shell脚本的调用顺序。
步骤S104,获取多个子Shell脚本对应的Hadoop作业。
每个子Shell脚本对应一个Hadoop作业,在调用子Shell脚本时,执行该子Shell脚本所对应的Hadoop作业。
步骤S106,按照调用方式调用多个子Shell脚本以执行Hadoop作业,直至多个子Shell脚本调用完毕,得到调用结果,其中,调用结果包括第一结果和第二结果。
步骤S108,在调用结果为第一结果时,执行第一Hadoop作业。
步骤S110,在调用结果为第二结果时,执行第二Hadoop作业。
在调用子Shell脚本执行完Hadoop之后,得到执行成功和执行失败两种结果。根据不同的调用结果执行不同的Hadoop作业。
如图2所示,子Shell脚本执行Hadoop作业后,判断执行结果是成功还是失败。如果执行成功,则返回值可以为0;如果执行失败,则返回值可以是-1。
在子Shell脚本执行Hadoop得到返回值之后,根据执行结果选择继续执行Hadoop作业。如图3所示,在执行子Shell脚本A之后,得到返回值,判断返回值显示执行成功时,调用子Shell脚本B;判断返回值显示执行失败时,执行退出动作。在显示执行失败时,也可以调用另外一个子Shell脚本。
通过上述实施例,通过Linux系统中的Shell脚本设置工作流,一个主Shell脚本可以调用多个子Shell脚本,每个子Shell脚本执行对应的Hadoop作业,并且在主Shell脚本中还设置有多个子Shell脚本的调用,也就实现了工作流的调用,解决了现有技术中单独安装工作流工具在执行时占用大量内存的问题,达到了减少工作流调用所占用的内存的效果
主Shell脚本的调用方式包括并行调用和顺序调用。以下结合图3至图5对本实施例的工作流调用方法进行说明。
1)顺序调用。
调用方式为顺序调用时,按照调用方式调用多个子Shell脚本以执行Hadoop作业,直至多个子Shell脚本调用完毕,得到调用结果包括:获取主Shell脚本中的当前子Shell脚本。执行当前子Shell脚本,得到返回值。判断返回值为第一返回值或者第二返回值。如果返回值为第一返回值,则调用第一分支Shell脚本。以及如果返回值为第二返回值,则调用第二分支Shell脚本。
图3示出了主Shell脚本中多个子Shell脚本执行的流程图。
步骤S301,执行子Shell脚本A。
步骤S302,判断执行子Shell脚本A后得到的返回值。如果返回值指示的是执行成功,则执行步骤S303;否则,执行步骤S304,退出。
步骤S303,执行子Shell脚本B,得到返回值。
步骤S305,判断执行子Shell脚本B得到的返回值是否指示执行成功,在指示子Shell脚本B执行成功后,执行步骤S306;否则执行步骤S307。
步骤S306,调用子Shell脚本D。
步骤S307,调用子Shell脚本C。
一个主Shell脚本中按照顺序调用的方式进行Hadoop作业时,通过判断每个子Shell脚本的返回值来执行不同分支的动作。
2)并行调用。
调用方式为并行调用时,按照调用方式调用多个子Shell脚本以执行Hadoop作业,直至多个子Shell脚本调用完毕,得到调用结果包括:并行调用多个子Shell脚本,并记录每个子Shell脚本的返回值。判断多个子Shell脚本是否已经调用完毕。如果多个子Shell脚本已经调用完毕,则读取每个子Shell脚本的返回值。对多个子Shell脚本的返回值进行计算,得到调用结果。
并行调用多个子Shell脚本时,同时调用主Shell脚本中的多个子Shell脚本,在主Shell脚本中的子Shell脚本都执行完毕后得到返回值,对多个返回值进行计算以得到调用结果。在对多个返回值进行计算时,可以根据预设的业务逻辑进行计算。例如,当返回值中有一个返回为失败则计算结果为-1,否则计算结果为0。
图4示出了主Shell脚本中多个子Shell脚本并行调用的流程图。
步骤S402,并行调用多个子Shell脚本。主Shell脚本通过nohup命令把需要并行运行的Hadoop作业压入后台实现并行执行的功能,即nohup调用子Shell脚本A,nohup调用子Shell脚本B,nohup调用子Shell脚本C,调用子Shell脚本后输出各个子Shell脚本的返回值。
步骤S404,循环判断存放进程标识的临时文件是否为空,如果临时文件不为空,则等待主Shell脚本调用的子Shell脚本执行,直至判断出临时文件为空。在判断出临时文件为空时,执行步骤S406。
步骤S406,读取各个子Shell脚本的返回值。
步骤S408,判断各个子Shell脚本的返回值的计算结果表示成功或者失败,在判断出返回值成功时,执行步骤S410;否则,执行步骤S412。
步骤S410,执行子Shell脚本D。
步骤S412,执行子Shell脚本E。
并行调用的多个子Shell脚本在执行结束后,得到多个子Shell脚本的返回值,对多个子Shell脚本的返回值进行计算,得到计算结果,这个计算结果就是调用结果。如步骤S408,计算多个子Shell脚本的返回值,得到调用结果。在调用结果为失败时,执行一个分支,即调用子Shell脚本D;在调用结果为成功时,执行另外一个分支,即调用子Shell脚本E。
优选地,在判断多个子Shell脚本是否已经调用完毕时,将每个子Shell脚本所对应的Hadoop作业的进程标识写入一个临时文件,Hadoop作业执行完毕则删除临时文件中的进程标识,当临时文件中的进程标识被删除后,即临时文件为空后,确定多个子Shell脚本已经调用完毕,即判断多个子Shell脚本是否已经调用完毕包括:将每个子Shell脚本的进程标识写入临时文件中。判断多个子Shell脚本中的第一子Shell脚本是否已经执行完毕。如果判断出第一子Shell脚本已经执行完毕,则删除临时文件中的第一子Shell脚本的进程标识。判断临时文件中子Shell脚本是否已经都被删除。如果临时文件中的子Shell脚本都已经被删除,则确定多个子Shell脚本已经调用完毕。
图5示出了判断多个子Shell脚本调用完毕的流程图。如图所示,在判断多个子Shell脚本调用完毕时,执行以下步骤:
步骤S502,调用子Shell脚本,并执行Hadoop作业。
步骤S504,把执行的Hadoop作业的进程标识写入临时文件中。
步骤S506,Hadoop作业执行完毕后把该进程标识从临时文件中删除。
通过上述实施例,并行调用子Shell脚本后,根据多个子Shell脚本的返回值来计算调用结果,并为不同的调用结果执行不同的分支,在不安装工作流工具的情况下,利用Linux本身的Shell脚本就能实现工作流的调用,解决了现有技术中单独安装工作流调用工作时占用内存的问题。
另外,该工作流的调用方法还可以将主Shell脚本加入到crontab服务中以定时调用主Shell脚本。通过crontab服务定时触发Hadoop作业,使得工作流的调用的操作更加方便。
本发明实施例还提供了一种工作流的调用装置。该装置可以通过计算机实现其功能。需要说明的是,本发明实施例的工作流的调用装置可以用于执行本发明实施例所提供的工作流的调用方法,本发明实施例的工作流的调用方法也可以通过本发明实施例所提供的工作流的调用装置来执行。
图6是根据本发明实施例的工作流的调用装置的示意图。如图6所示,该工作流的调用装置包括:设置单元10、获取单元30、调用单元50和执行单元70。
设置单元10用于在主Shell脚本中设置多个子Shell脚本的调用方式;
一个主Shell脚本包括多个子Shell脚本,并记录了多个子Shell脚本的调用方式,例如,主Shell脚本中的子Shell脚本顺序调用或者并行调用。在脚本的调用方式为顺序调用时,主Shell脚本还可以设定多个子Shell脚本的调用顺序。
获取单元30用于获取多个子Shell脚本对应的Hadoop作业;
每个子Shell脚本对应一个Hadoop作业,在调用子Shell脚本时,执行该子Shell脚本所对应的Hadoop作业。
调用单元50用于按照调用方式调用多个子Shell脚本以执行Hadoop作业,直至多个子Shell脚本调用完毕,得到调用结果,其中,调用结果包括第一结果和第二结果;
执行单元70用于在调用结果为第一结果时,执行第一Hadoop作业;以及在调用结果为第二结果时,执行第二Hadoop作业。
在调用子Shell脚本执行完Hadoop之后,得到执行成功和执行失败两种结果。根据不同的调用结果执行不同的Hadoop作业。
如图2所示,子Shell脚本执行Hadoop作业后,判断执行结果是成功还是失败。如果执行成功,则返回值可以为0;如果执行失败,则返回值可以是-1。
在子Shell脚本执行Hadoop得到返回值之后,根据执行结果选择继续执行Hadoop作业。如图3所示,在执行子Shell脚本A之后,得到返回值,判断返回值显示执行成功时,调用子Shell脚本B;判断返回值显示执行失败时,执行退出动作。在显示执行失败时,也可以调用另外一个子Shell脚本。
通过上述实施例,通过Linux系统中的Shell脚本设置工作流,一个主Shell脚本可以调用多个子Shell脚本,每个子Shell脚本执行对应的Hadoop作业,并且在主Shell脚本中还设置有多个子Shell脚本的调用,也就实现了工作流的调用,从而解决了现有技术中单独安装工作流工具在执行时占用大量内存的问题,达到了减少工作流调用所占用的内存的效果。
主Shell脚本的调用方式包括并行调用和顺序调用。以下结合图3至图5对本实施例的工作流调用方法进行说明。
1)顺序调用。
调用方式为顺序调用,调用单元包括:获取模块,用于获取主Shell脚本中的当前子Shell脚本;执行模块,用于执行当前子Shell脚本,得到返回值;判断模块,用于判断返回值为第一返回值或者第二返回值;第二调用模块,用于在返回值为第一返回值时,调用第一分支Shell脚本;以及在返回值为第二返回值时,调用第二分支Shell脚本。
执行子Shell脚本A。判断执行子Shell脚本A后得到的返回值。如果返回值指示的是执行成功,则执行执行子Shell脚本B,得到返回值,否则退出。判断执行子Shell脚本B得到的返回值是否指示执行成功,在指示子Shell脚本B执行成功后,执行调用子Shell脚本D。在指示子Shell脚本B执行失败后,调用子Shell脚本C。一个主Shell脚本中按照顺序调用的方式进行Hadoop作业时,通过判断每个子Shell脚本的返回值来执行不同分支的动作。
2)并行调用。
调用方式为并行调用时,调用单元包括:第一调用模块,用于并行调用多个子Shell脚本,并记录每个子Shell脚本的返回值;判断模块,用于判断多个子Shell脚本是否已经调用完毕;读取模块,用于在多个子Shell脚本已经调用完毕时,读取每个子Shell脚本的返回值;计算模块,用于对多个子Shell脚本的返回值进行计算,得到调用结果。
并行调用多个子Shell脚本时,同时调用主Shell脚本中的多个子Shell脚本,在主Shell脚本中的子Shell脚本都执行完毕后得到返回值,对多个返回值进行计算以得到调用结果。在对多个返回值进行计算时,可以根据预设的业务逻辑进行计算。例如,当返回值中有一个返回为失败则计算结果为-1,否则计算结果为0。
并行调用多个子Shell脚本。主Shell脚本通过nohup命令把需要并行运行的Hadoop作业压入后台实现并行执行的功能,即nohup调用子Shell脚本A,nohup调用子Shell脚本B,nohup调用子Shell脚本C,调用子Shell脚本后输出各个子Shell脚本的返回值。循环判断存放进程标识的临时文件是否为空,如果临时文件不为空,则等待主Shell脚本调用的子Shell脚本执行,直至判断出临时文件为空。在判断出临时文件为空时,读取各个子Shell脚本的返回值。
判断各个子Shell脚本的返回值的计算结果表示成功或者失败,在判断出返回值成功时,执行子Shell脚本D;否则,执行子Shell脚本E。
并行调用的多个子Shell脚本在执行结束后,得到多个子Shell脚本的返回值,对多个子Shell脚本的返回值进行计算,得到计算结果,这个计算结果就是调用结果。如步骤S408,计算多个子Shell脚本的返回值,得到调用结果。在调用结果为失败时,执行一个分支,即调用子Shell脚本D;在调用结果为成功时,执行另外一个分支,即调用子Shell脚本E。
优选地,在判断多个子Shell脚本是否已经调用完毕时,将每个子Shell脚本所对应的Hadoop作业的进程标识写入一个临时文件,Hadoop作业执行完毕则删除临时文件中的进程标识,当临时文件中的进程标识被删除后,即临时文件为空后,确定多个子Shell脚本已经调用完毕,即判断模块包括:写入子模块,用于将每个子Shell脚本的进程标识写入临时文件中;第一判断子模块,用于判断多个子Shell脚本中的第一子Shell脚本是否已经执行完毕;删除子模块,用于在判断出第一子Shell脚本已经执行完毕时,删除临时文件中的第一子Shell脚本的进程标识;第二判断子模块,用于判断临时文件中子Shell脚本是否已经都被删除;确定子模块,用于在临时文件中的子Shell脚本都已经被删除时,确定多个子Shell脚本已经调用完毕。
通过上述实施例,并行调用子Shell脚本后,根据多个子Shell脚本的返回值来计算调用结果,并为不同的调用结果执行不同的分支,在不安装工作流工具的情况下,利用Linux本身的Shell脚本就能实现工作流的调用,解决了现有技术中单独安装工作流工具在执行时占用大量内存的问题。
另外,装置还包括定时单元,用于在按照调用方式调用多个子Shell脚本以执行Hadoop作业,直至多个子Shell脚本调用完毕,得到调用结果之前,将主Shell脚本加入到crontab服务中以定时调用主Shell脚本。通过crontab服务定时触发Hadoop作业,使得工作流的调用的操作更加方便。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种工作流的调用方法,其特征在于,包括:
在主Shell脚本中设置多个子Shell脚本的调用方式;
获取所述多个子Shell脚本对应的Hadoop作业;
按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果,其中,所述调用结果包括第一结果和第二结果;
在所述调用结果为所述第一结果时,执行第一Hadoop作业;以及
在所述调用结果为所述第二结果时,执行第二Hadoop作业。
2.根据权利要求1所述的方法,其特征在于,所述调用方式为并行调用,按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果包括:
并行调用所述多个子Shell脚本,并记录每个子Shell脚本的返回值;
判断所述多个子Shell脚本是否已经调用完毕;
如果所述多个子Shell脚本已经调用完毕,则读取所述每个子Shell脚本的返回值;
对所述多个子Shell脚本的返回值进行计算,得到调用结果。
3.根据权利要求2所述的方法,其特征在于,判断所述多个子Shell脚本是否已经调用完毕包括:
将所述每个子Shell脚本的进程标识写入临时文件中;
判断所述多个子Shell脚本中的第一子Shell脚本是否已经执行完毕;
如果判断出所述第一子Shell脚本已经执行完毕,则删除所述临时文件中的所述第一子Shell脚本的进程标识;
判断所述临时文件中所述子Shell脚本是否已经都被删除;
如果所述临时文件中的所述子Shell脚本都已经被删除,则确定所述多个子Shell脚本已经调用完毕。
4.根据权利要求1所述的方法,其特征在于,所述调用方式为顺序调用,按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果包括:
获取所述主Shell脚本中的当前子Shell脚本;
执行所述当前子Shell脚本,得到返回值;
判断所述返回值为第一返回值或者第二返回值;
如果所述返回值为第一返回值,则调用第一分支Shell脚本;以及
如果所述返回值为第二返回值,则调用第二分支Shell脚本。
5.根据权利要求1所述的方法,其特征在于,在按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果之前,所述方法还包括:
将所述主Shell脚本加入到crontab服务中以定时调用所述主Shell脚本。
6.一种工作流的调用装置,其特征在于,包括:
设置单元,用于在主Shell脚本中设置多个子Shell脚本的调用方式;
获取单元,用于获取所述多个子Shell脚本对应的Hadoop作业;
调用单元,用于按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果,其中,所述调用结果包括第一结果和第二结果;
执行单元,用于在所述调用结果为所述第一结果时,执行第一Hadoop作业;以及在所述调用结果为所述第二结果时,执行第二Hadoop作业。
7.根据权利要求6所述的装置,其特征在于,所述调用方式为并行调用,所述调用单元包括:
第一调用模块,用于并行调用所述多个子Shell脚本,并记录每个子Shell脚本的返回值;
判断模块,用于判断所述多个子Shell脚本是否已经调用完毕;
读取模块,用于在所述多个子Shell脚本已经调用完毕时,读取所述每个子Shell脚本的返回值;
计算模块,用于对所述多个子Shell脚本的返回值进行计算,得到调用结果。
8.根据权利要求7所述的装置,其特征在于,所述判断模块包括:
写入子模块,用于将所述每个子Shell脚本的进程标识写入临时文件中;
第一判断子模块,用于判断所述多个子Shell脚本中的第一子Shell脚本是否已经执行完毕;
删除子模块,用于在判断出所述第一子Shell脚本已经执行完毕时,删除所述临时文件中的所述第一子Shell脚本的进程标识;
第二判断子模块,用于判断所述临时文件中所述子Shell脚本是否已经都被删除;
确定子模块,用于在所述临时文件中的所述子Shell脚本都已经被删除时,确定所述多个子Shell脚本已经调用完毕。
9.根据权利要求6所述的装置,其特征在于,所述调用方式为顺序调用,所述调用单元包括:
获取模块,用于获取所述主Shell脚本中的当前子Shell脚本;
执行模块,用于执行所述当前子Shell脚本,得到返回值;
判断模块,用于判断所述返回值为第一返回值或者第二返回值;
第二调用模块,用于在所述返回值为第一返回值时,调用第一分支Shell脚本;以及在所述返回值为第二返回值时,调用第二分支Shell脚本。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
定时单元,用于在按照所述调用方式调用所述多个子Shell脚本以执行所述Hadoop作业,直至所述多个子Shell脚本调用完毕,得到调用结果之前,将所述主Shell脚本加入到crontab服务中以定时调用所述主Shell脚本。
CN201410767950.7A 2014-12-11 2014-12-11 工作流的调用方法和装置 Active CN104461721B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410767950.7A CN104461721B (zh) 2014-12-11 2014-12-11 工作流的调用方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410767950.7A CN104461721B (zh) 2014-12-11 2014-12-11 工作流的调用方法和装置

Publications (2)

Publication Number Publication Date
CN104461721A CN104461721A (zh) 2015-03-25
CN104461721B true CN104461721B (zh) 2017-11-14

Family

ID=52907822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410767950.7A Active CN104461721B (zh) 2014-12-11 2014-12-11 工作流的调用方法和装置

Country Status (1)

Country Link
CN (1) CN104461721B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176903A (zh) * 2013-03-12 2013-06-26 百度在线网络技术(北京)有限公司 MapReduce分布式系统程序的测试方法及设备
CN103399787A (zh) * 2013-08-06 2013-11-20 北京华胜天成科技股份有限公司 一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN103678098A (zh) * 2012-09-06 2014-03-26 百度在线网络技术(北京)有限公司 一种hadoop程序测试的方法和系统
CN104050003A (zh) * 2014-06-27 2014-09-17 浪潮集团有限公司 一种采用shell脚本启动Nutch采集系统的方法
CN104156316A (zh) * 2014-08-06 2014-11-19 浪潮(北京)电子信息产业有限公司 一种Hadoop集群批处理作业的方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910166B2 (en) * 2011-09-09 2014-12-09 Microsoft Corporation Automatic transcoding and semantic adaptation between scripting and workflow systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103678098A (zh) * 2012-09-06 2014-03-26 百度在线网络技术(北京)有限公司 一种hadoop程序测试的方法和系统
CN103176903A (zh) * 2013-03-12 2013-06-26 百度在线网络技术(北京)有限公司 MapReduce分布式系统程序的测试方法及设备
CN103399787A (zh) * 2013-08-06 2013-11-20 北京华胜天成科技股份有限公司 一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN104050003A (zh) * 2014-06-27 2014-09-17 浪潮集团有限公司 一种采用shell脚本启动Nutch采集系统的方法
CN104156316A (zh) * 2014-08-06 2014-11-19 浪潮(北京)电子信息产业有限公司 一种Hadoop集群批处理作业的方法及系统

Also Published As

Publication number Publication date
CN104461721A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
CN108683818B (zh) 呼叫中心分配坐席的方法、系统、设备及存储介质
CN107977268A (zh) 人工智能的异构硬件的任务调度方法、装置及可读介质
CN104239139B (zh) 一种处理开机自启动项目的方法、装置及终端
CN110908795A (zh) 云计算集群混部作业调度方法、装置、服务器及存储装置
CN110377520B (zh) 交易场景的测试方法及装置、电子设备和可读存储介质
CN108830235A (zh) 用于生成信息的方法和装置
CN108021621A (zh) 数据库数据采集方法、应用服务器及计算机可读存储介质
CN111985786A (zh) 基于坐席的任务分配方法、装置、计算机设备和存储介质
CN111724037A (zh) 运营资源分配方法、装置、计算机设备及可读存储介质
CN110489242B (zh) 分布式数据计算方法、装置、终端设备及存储介质
CN114638391A (zh) 运单风险场景识别处理方法、装置、计算机设备和介质
CN107864187A (zh) 终端设备联机任务执行方法及服务器
CN104461721B (zh) 工作流的调用方法和装置
CN113051049A (zh) 任务调度系统、方法、电子设备及可读存储介质
CN106897807A (zh) 一种业务风险控制方法及设备
CN112966256A (zh) 基于建筑信息模型的设备管理方法及相关装置
CN110064198A (zh) 资源的处理方法及装置、存储介质和电子装置
CN113104683B (zh) 基于多机器人的电梯调度方法及装置
CN110516922B (zh) 分配数据处理对象的方法及装置
CN108874556A (zh) 一种数据交互方法、装置、存储介质及移动终端
CN104572036B (zh) 事件的处理方法及装置
CN113890948A (zh) 基于语音外呼机器人对话数据的资源分配方法及相关设备
CN111506872A (zh) 基于负载矩阵分析的任务分配方法及装置
CN106487693B (zh) 一种数据转移方法、装置和系统及计算机存储介质
CN109062702A (zh) 一种计算资源分配方法、相关装置及可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Workflow calling method and device

Effective date of registration: 20190531

Granted publication date: 20171114

Pledgee: Shenzhen Black Horse World Investment Consulting Co., Ltd.

Pledgor: Beijing Guoshuang Technology Co.,Ltd.

Registration number: 2019990000503

CP02 Change in the address of a patent holder

Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Patentee after: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Patentee before: BEIJING GRIDSUM TECHNOLOGY Co.,Ltd.