一种面向云计算平台的科学工作流系统及方法技术领域
本发明涉及面向云计算平台的科学工作流系统及方法,属于云计算领域,特别是
对于大规模的科学数据分析任务问题。
背景技术
科学数据分析目前在多个科学研究领域(包括生物科学、气象科学以及高能物理
科学等)都扮演着越来越重要的角色。每一个科学数据分析任务往往都包含多个计算步骤,
每个计算步骤代表着一个数据分析处理过程。然而小规模科研团队或个人由于没有足够的
计算机技术支持,使得他们在进行科学数据分析的时候遭遇到了障碍,主要体现在三个方
面:(1)实验室机房计算资源的限制;(2)需要手动安装软件工具来部署计算环境;(3)需要
手动跟踪并执行各个计算步骤。对于大规模的科学数据分析任务,这三个受限因素将会更
加凸显。
目前科学工作流这一技术路线本身并不能解决计算资源受限以及手动部署计算
环境这些问题,不存在工作流所需的计算环境精准的定制服务,以及不存在自动化的科学
工作流计算环境的部署过程和科学工作流的执行过程。一些科学网关基于SaaS软件交付模
式提供了面向社区的科学工作流服务框架,主要用于开发面向多租户的科学数据分析平
台,但是它们不能为复杂的科学数据分析流程提供更为精准的定制服务。一个面向多租户
的科学数据分析平台时,其最大的挑战是如何为科研人员在软件工具、数据分析流程甚至
计算环境方面提供足够的定制功能。一些基于WebService的框架支持将数据分析应用程
序部署在相应的计算中心中,并通过将这些应用程序封装为WebService的方式供科研人
员来组装定制科学数据分析流程。这些软件框架虽然简化了定制的过程,使得能够以流水
线化的方式来组装科学数据分析流程。但是这些科学网关无法提供同质化的运行时环境的
定制,不能够为所有的科学数据分析流程提供同质化的运行时环境:相同的分布式计算资
源和软件环境,即无法为具有多样性的科学数据分析实验提供具有针对性的运行时环境。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种面向云计算平台的科学工
作流系统及方法,为科研人员提供可定制、自动化部署、自动化执行的科学工作流服务,科
学工作流服务能够根据用户所定制的工作流以及计算资源需求在云平台中自动部署相应
的计算环境并进行科学工作流。
本发明的技术解决方案:一种面向云计算平台的科学工作流系统,包括定制模块、
自动化部署模块和执行模块,其中:
定制模块:包括显示层、工作流层、执行层和计算环境层四个层次的定制,其中显
示层用于定制科学软件图形化工具;工作流层利用图形化工具定制科学工作流计算流程的
各个计算步骤;执行层用于定制科学软件的命令行执行参数;计算环境层用定制计算环境
抽象描述模板和科学软件的自动化配置脚本模板;通过计算环境抽象描述模板生成计算环
境抽象描述,所述计算环境抽象描述是用于描述执行一个科学工作流计算流程所需的计算
资源以及相应的科学软件;当科研人员定制完成一个科学工作流计算流程,并且选择所需
的计算资源后(比如虚拟机个数以及虚拟机大小等),相应的计算环境抽象描述会自动生
成;同时利用定制的科学软件自动化配置脚本模板,为自定义科学软件的安装以及配置过
程提供依据,科研人员根据该模板来为具体的科学软件编写自动化配置脚本;计算环境抽
象描述以及科学软件的自动化配置脚本共同奠定了计算环境自动化部署的基础;
自动化部署模块:接收来自定制模块的计算环境抽象描述,根据计算环境抽象描
述,并利用相应的科学软件自动化配置脚本在指定的云计算平台中部署相应的云端计算环
境,云端计算环境由多个虚拟机组成的一个计算集群,并安装配置所需的科学软件;
执行模块:在云端计算环境部署完后,调度服务和分布式资源管理服务;调度服务
负责根据科研人员定制的科学工作流执行流程来调度各个科学计算步骤的先后执行顺序,
以保证科学工作流的正确执行;分布式资源管理服务则负责管理虚拟机计算集群,将当前
调度的计算任务分发到相应的计算资源中并以指定的方式执行,所述执行模块中的指定方
式是指串行执行或并行执行。
所述定制模块中,显示层定制的科学软件的图形化工具具有多个通用的功能,包
括用于设置执行参数的表单;科研人员通过科学软件图形化工具模板来定制具体的科学软
件从而为科学工作流做定制基础,使科学软件能够以交互友好的图形化工具的形式呈现出
来。
所述计算环境抽象描述模板包括两部分内容:一是计算资源(即虚拟机个数以及
每台虚拟机的CPU核数等配置参数);二是软件环境(即所需的相应的科学软件集合)
采用以下描述的计算环境抽象描述语言模板表示如表1所示,计算环境抽象描述
语言模板中根元素为“workspace”,代表了一个计算环境,其下有5个子元素“provider”、
“vm_size”、“vm_number”、“description”和“run_list”:
“provider”:表示部署该计算环境的某一个具体的云计算平台;
“vm_size”:表示需要创建的虚拟机的大小;
“vm_number”:表示该计算环境拥有的虚拟机个数;
“description”:用于描述该计算环境的特征以及用途;
“run_list”:表示需要安装的科学软件的集合,每个科学软件用“package”元素表
示,且其下的“name”元素用于表示该科学软件的名称,“version”元素用于指定该科学软件
的版本号;
“provider”、“vm_size”和“vm_number”元素共同决定了计算环境的硬件特征,而
“run_list”元素以及其下的“package”元素集合则决定了该计算环境的软件特征,即表明
该计算环境能够服务的科学工作流计算流程。
所述定制模块中,执行层中定制科学软件的命令行执行参数包含多个可控参数,
科研人员通过自定义这些执行参数来达到控制执行过程的目的。
所述定制模块中的科学软件的自动化配置脚本模板的根元素为“recipe”,表示一
个科学软件安装配置的“配方”,其下有4个子元素:“name”、“version”、“dependencies”和
“actions”如表2所示:
“name”:表示该科学软件的名称;
“version”:表示需要安装的版本号;
“dependencies”:表示该科学软件所依赖的其他应用软件,每个具体的应用软件
用“dependency”元素表示,同时需要指定应用软件的名称和版本号;
“actions”:表示安装配置该科学软件的具体行为动作,包括:
“create_directory”:新建目录;
“create_user”:新建用户;
“download_package”:下载软件包;
“extract_package”:解压软件包;
“set_environment”:设置环境变量;
“shell_command”:允许直接执行shell命令,比如使用源码安装科学软件,则可以
使用“make”命令对源码进行编译;
根据上述描述,定制模块得到的计算环境抽象描述,以及相应的科学软件自动化
配置脚本将共同指导计算环境的自动化部署过程。
所述自动化部署模块包括:控制模块、云平台集群自动化部署管理工具Chef、Chef
的第三方插件Spiceweasel、;其中控制模块基于Chef和Spiceweasel之上,是自动化部署模
块的逻辑控制层,是整个核心;
控制模块:为逻辑控制层,接收来自定制模块的计算环境抽象描述,并调用控制模
块中的服务将计算环境抽象描述转换成与指定云计算平台相关的Spiceweasel文件,同时
负责与ChefServer进行通信;
Spiceweasel:用于帮助Chef批量管理基础设施的命令行工具,Chef提供的基于编
程语言Ruby、文件格式JSON或文件格式YAML的描述语言能够帮助简化计算环境XML抽象描
述到Chef的内置工具ChefKnife命令行程序的翻译过程;
ChefServer:负责与云计算平台进行通信,根据Spiceweasel文件在指定云计算
平台上部署相应的计算环境,管理虚拟机的自动化创建与配置过程。
所述定制模块中利用图形化工具定制科学工作流计算流程的各个计算步骤的具
体实现过程:一个科学工作流计算流程包含多个计算步骤以及这些计算步骤间的内在联
系,将科学工作流计算流程形象化为一个DAG图(DirectAcyclicGraph,有向无环图),每
个节点表示一个具体的计算步骤或科学软件,一个工作流包含多个软件,按照定制需求分
步骤的执行不同的软件,每条边表示计算步骤间的先后执行顺序或数据流向,基于如下所
示的工作流描述模板,科研人员能够利用科学软件的图形化工具来可视化地自定义科学工
作流流程;为了保证科学工作流的各个计算步骤间的有序执行,基于DAG图以及上面提出的
工作流执行流程描述语言;在该模式中构建了工作流执行流程描述模板如表3所示,工作流
执行流程描述模板根元素为“workflow”,表示一个完整的科学工作流流程,其下有2个子元
素:“task”和“connector”:
“task”:表示工作流中一个具体的科学工作流步骤,即一个科学软件的执行,其下
“name”元素表示该计算步骤的名称,“command”元素表示具体的命令行执行程序;
“connector”:表示计算步骤间的先后执行顺序,其下的“origin”元素表示先行任
务,“destination”元素表示后继任务,即只有当某任务的所有先行任务都执行完成之后,
该任务才能够被调度执行。
所述执行模块具体实现过程为:
(1)指定任务运行的计算环境
调度服务将任务运行在指定的计算环境中,簹工作流的每个计算任务用“Job”对
象来表示,其包含了用于执行某一个计算任务的所有具体信息,自动化部署模块会在配置
完成之后返回当前所配置计算环境的详细信息,将当前科学工作流所包含的所有计算任务
所对应“Job”对象的配置参数字段信息实时更新为当前指定计算环境的信息,并通过指定
的jobplugin,即提供与分布式资源管理服务进行通信的命令行接口和shellplugin,即
提供与远程计算集群进行通信的功能,将计算任务运行在指定的计算环境中;
(2)任务执行
采用部署有Torque分布式资源管理服务的计算集群进行通信,Torque作为
portablebatchsystem项目的一个分支,能够对批处理作业以及计算资源进行有效地管
理和调度,通过“qsub[shellscript]”指令提交的作业将会被分配到一台空闲的计算节点
中进行运算,运算的过程即shellscript执行脚本的计算过程。
所述任务执行中,为了充分利用虚拟机计算集群的资源优势来提高运算速度,与
Hadoop集群、MapReduce分布式计算框架进行结合,利用相应的Hadoop(一种大数据处理工
具)插件,将计算任务发送到Hadoop集群中,并利用MapReduce(大数据处理工具的计算框
架)分布式计算框架来加快任务的执行,通过HadoopStreaming(大数据处理工具的一种计
算方式)的方式来执行科学软件,通过该部分执行科学工作流。
一种面向云计算平台的科学工作流实现方法,包括:定制、部署以及执行服务阶
段,实现过程如下:
(1)定制阶段,通过分别从显示层、工作流层、执行层和计算环境层四个层次的定
制,生成计算环境抽象描述与科学软件的自动化配置描述;
(2)自动化部署阶段,接收来自定制阶段的计算环境抽象描述与科学软件自动化
配置脚本,将共同指导计算环境的自动化部署过程;
(3)执行服务阶段,当计算环境部署完成之后,将科学工作流的各个计算步骤准确
调度并运行在云端计算环境中;读取科研人员定制的工作流执行流程,并负责调度各个计
算步骤的执行顺序,同时对计算集群进行管理和调度。
本发明与现有技术相比的优点在于:
(1)本发明采用到云平台计算资源的定制技术,解决了实验室机房计算资源的限
制,提升了现有科学数据分析平台计算能力不足的问题,为科学工作流系统提供了近于无
限扩展的计算资源;
(2)结合云计算技术为科学工作流服务提供全方面的定制服务,为不同的科学数
据分析流程提供个性化的具有针对性的运行时环境;解决了面向现有科学数据分析平台为
科研人员在软件工具、数据分析流程无法精准定制的问题以及计算环境资源无法定制的问
题;
(3)在云平台提供的基础性的虚拟机级服务,和运行科学工作流所需的计算环境
条件的限制下,构建了基于云平台提供的虚拟机服务基础之上自动化配置管理服务并自动
化的安装配置所需的软件环境,提供了自动化的部署与执行环境,为科研人员提供了一整
套的自动化可定制科学工作流服务,提升了科学工作流系统的执行效率,加快了运行时间,
并且极大的降低了科研人员的研究成本等。
附图说明
图1为本发明系统的体系结构图;
图2为本发明系统中自动化部署模块实现流程图;
图3为本发明执行模块流程图;
图4为本发明系统中部署模块调用相关服务的流程图;
图5为本发明系统中执行模块中任务运行图。
具体实施方式
下面结合附图及表进行详细说明。
表1为本发明系统中计算环境抽象描述语言模板;
表2为本发明系统中自动化部署模块中需调用的科学软件自动化配置脚本模板;
表3为本发明执行模块中工作流执行流程描述模板;
如图1所示,本发明面向云计算平台的科学工作流系统,包括:
定制模块:包括了四个层次的定制,该定制框架能够从显示层到计算环境层大大
提高科学工作流平台各层次的可定制性:
1)显示层:定制科学软件图形化工具;
2)工作流层:利用图形化工具定制科学工作流计算流程的各个计算步骤;
3)执行层:定制科学软件的命令行执行参数;
4)计算环境层:选择计算资源,并定制科学软件的自动化配置脚本;
自动化部署模块:在面向云计算平台的科学工作流平台框架中,不同用户定制的
科学工作流流程在云平台中都有其独立的计算环境,保证了不同用户间程序运行以及数据
的隔离。在定制模块得到的计算环境抽象描述,以及相应的科学软件自动化配置脚本将共
同指导计算环境的自动化部署过程。
如图2所示为自动化部署模块框架,在框架中,自动化部署模块负责接收来自定制
阶段的计算环境抽象描述,并利用相应的科学软件自动化配置脚本在云平台上创建所需的
虚拟机集群,并安装配置所需的科学软件;
执行模块:当计算环境部署完成之后,接下来的工作就是将科学工作流计算流程
的各个计算步骤准确调度并运行在云计算环境中。
如图3所示是本发明提出的执行模块的框架。调度服务负责读取科研人员定制的
工作流执行流程,并负责调度各个计算步骤的执行顺序。由于计算环境往往是由多个虚拟
机组成的一个计算集群,因此需要有分布式资源管理服务(例如Torque、SGE或Condor等分
布式资源管理工具)来对计算集群进行管理和调度。当前被调度的任务提交给分布式资源
管理服务后,将被分配到指定的计算资源中以指定的方式执行(串行执行或并行执行等);
定制模块中,其主要包括了四个层次的定制:
(1)显示层的定制是通过图形化工具模板来实现的。图形化工具模板包括了许多
通用的功能,包括用于设置执行参数的表单等。社区开发人员可以通过Web小工具模板来为
具体的科学软件做定制,使科学软件能够以交互友好的Web小工具的形式呈现出来;
(2)工作流描述模板描绘了一个科学工作流流程所包含的各个计算步骤以及这些
计算步骤间的内在联系,其可以被形象化为一个DAG图(DirectAcyclicGraph,有向无环
图)。每个节点表示一个具体的计算步骤或科学软件,每条边表示计算步骤间的先后执行顺
序或数据流向。基于工作流描述模板,科研人员能够利用科学软件的Web小工具来可视化地
自定义科学工作流流程;
为了保证科学工作流的各个计算步骤间的有序执行,基于DAG图以及上面提出的
工作流执行流程描述语言如表3所示。在该模式中,根元素为“workflow”,表示一个完整的
科学工作流流程,其下有2个子元素:“task”和“connector”:
“task”:表示工作流中一个具体的科学工作流步骤,即一个科学软件的执行,其下
“name”元素表示该计算步骤的名称,“command”元素表示具体的命令行执行程序;
“connector”:表示计算步骤间的先后执行顺序,其下的“origin”元素表示先行任
务,“destination”元素表示后继任务,即只有当某任务的所有先行任务都执行完成之后,
该任务才能够被调度执行。
(3)科学工作流的每个科学工作流步骤都需要具体的科学软件来完成,同时科学
软件需要具体的命令行执行程序来启动。命令行执行程序模板为控制科学软件的执行提供
了依据,其往往包含多个可控参数,科研人员可以通过自定义这些执行参数来达到控制执
行过程的目的;
(4)计算环境是科学软件执行的载体,是整个科学工作流流程的根基。计算环境的
抽象描述模板为计算环境的定制提供了依据,其主要描述了计算环境所需的硬件资源以及
所需安装的科学软件。当科研人员定制完成科学工作流流程,并且选择所需的计算资源后
(比如虚拟机个数以及虚拟机大小等),相应的计算环境抽象描述会自动生成。同时科学软
件的自动化配置脚本模板为自定义科学软件的安装以及配置过程提供了依据,社区开发人
员可以根据该模板来为具体的科学软件编写自动化配置脚本。计算环境抽象描述以及科学
软件的自动化配置脚本共同奠定了计算环境自动化部署的基础;
基于XML的计算环境抽象描述语言,用于描述执行一个科学工作流流程所需的计
算资源以及相应的科学软件。
计算环境描述包括两部分内容:1、硬件计算资源;2、所需要的软件环境。如下所示
是该抽象描述语言的一个模板如表1所示。
在该模式中,根元素为“workspace”,代表了一个计算环境,其下有5个子元素
“provider”、“vm_size”、“vm_number”、“description”和“run_list”:
“provider”:表示部署该计算环境的某一个具体的云平台,比如AmazonEC2或
MicrosoftAzure等;
“vm_size”:表示需要创建的虚拟机的大小(CPU核数),比如“Small”表示一个核,
“Medium”表示两个核,“Large”表示四个核等;
“vm_number”:表示该计算环境拥有的虚拟机个数;
“description”:用于描述该计算环境的特征以及用途等;
“run_list”:表示需要安装的科学软件集合,每个科学软件用“package”元素表
示,且其下的“name”元素用于表示该科学软件的名称,“version”元素用于指定该科学软件
的版本号。
“provider”、“vm_size”和“vm_number”元素共同决定了计算环境的硬件特征,而
“run_list”元素以及其下的“package”元素集合则决定了该计算环境的软件特征,即表明
该计算环境能够服务的科学工作流流程。
部署模块:部署系统的主要功能是根据计算环境抽象描述在指定的云平台中部署
相应的计算环境。该部署系统主要包括以下几个重要的功能模块:
核心控制模块:部署系统的逻辑控制层,接收来自定制阶段的计算环境XML抽象描
述,并调用相关转换服务将其转换成与指定云平台相关的Spiceweasel文件,同时负责与
ChefServer进行通信;
Spiceweasel:用于帮助Chef批量管理基础设施的命令行工具,其提供的基于
Ruby、JSON或YAML格式的描述语言能够帮助简化计算环境XML抽象描述到ChefKnife命令
行程序的翻译过程;
ChefServer:负责与云平台进行通信,根据Spiceweasel文件在指定云平台上部
署相应的计算环境,管理虚拟机的自动化创建与配置过程。
为了能够自动化安装配置科学软件(例如下载解压软件包,以及设置环境变量
等),本发明设计了一种自动化配置描述语言,如下所示是该自动化配置描述语言的一个模
板如表2所示。在该模式中,根元素为“recipe”,表示一个科学软件安装配置的“配方”,其下
有4个子元素:“name”、“version”、“dependencies”和“actions”:
“name”:表示该科学软件的名称;
“version”:表示需要安装的版本号;
“dependencies”:表示该科学软件所依赖的其他应用软件,每个具体的应用软件
用“dependency”元素表示,同时需要指定应用软件的名称和版本号;
“actions”:表示安装配置该科学软件的具体行为动作,包括:
“create_directory”:新建目录;
“create_user”:新建用户;
“download_package”:下载软件包;
“extract_package”:解压软件包;
“set_environment”:设置环境变量;
“shell_command”:允许直接执行shell命令,比如使用源码安装科学软件,则可以
使用“make”命令对源码进行编译。
核心控制模块基于Chef和Spiceweasel(Chef的第三方插件)之上,是部署系统的
逻辑控制层,是整个部署系统的核心。通过Chef配置管理工具来管理计算环境在云平台中
的自动化创建与配置过程;Spiceweasel(Chef的第三方插件)批量管理其基础设施。将计算
环境抽象描述转换成Spiceweasel描述文件,并负责与ChefServer进行通信,其同时还承
担着维护各个计算环境及其虚拟机的状态等任务。
如图4所示是在定制并执行科学工作流过程中配置计算环境的过程。在定制科学
工作流之前,科研人员能够预先定制所需的硬件计算资源并创建新的计算环境,如果有多
个计算环境,则同时需要设置默认计算环境用于执行当前工作流。当科研人员完成科学工
作流的定制之后,相应的计算环境XML抽象描述会自动生成,其描述了执行当前工作流所需
要的软件环境。随后通过调用部署系统相关的WebService服务(例如bootstrap接口)将该
计算环境抽象描述发送到部署系统,并完成相应的软件环境配置工作。其他相关的计算环
境管理功能(例如停止指定计算环境、启动指定计算环境等)同样能够方便地通过调用部署
系统的相关WebService服务(例如stop、start等接口)来完成。
Galaxy中其他相关的计算环境管理功能(例如停止指定计算环境、启动指定计算
环境等)同样能够方便地通过调用部署系统的相关WebService服务(例如stop、start等接
口)来完成。
执行模块的实现:主要包括两个功能部分:1、调度服务;2、分布式资源管理服务。
调度服务主要负责根据科研人员定制的工作流执行流程来调度各个科学工作流步骤的先
后执行顺序,以保证科学工作流的正确执行。分布式资源管理服务则负责管理虚拟机计算
集群,将当前调度的计算任务分发到相应的计算资源中并以指定的方式执行。
下面的两个部分是阐述如何将任务运行在指定的计算环境中以及利用虚拟机计
算集群的资源优势来提高运算速度。
(1)将任务运行在指定的计算环境中,工作流的每个计算任务用“Job”对象来表
示,其包含了用于执行某一个计算任务的所有具体信息,部署模块会在配置完成之后返回
当前所配置计算环境的详细信息,将当前科学工作流所包含的所有计算任务所对应“Job”
对象的配置参数字段信息实时更新为当前指定计算环境的信息,并通过指定的jobplugin
(提供与分布式资源管理服务进行通信的命令行接口)和shellplugin(提供与远程计算集
群进行通信的功能)将计算任务运行在指定的计算环境中。完整的流程如图5所示,其与图4
中的流程一起描述了如何定制、部署以及执行服务。该部分是对工作流执行流程的定义。
(2)为了充分利用虚拟机计算集群的资源优势来提高运算速度,开发了相应的
Hadoop(一种大数据处理工具)插件,将计算任务发送到Hadoop集群中,并利用MapReduce
(大数据处理工具的计算框架)分布式计算框架来加快任务的执行,通过HadoopStreaming
(大数据处理工具的一种计算方式)的方式来执行科学软件,通过该部分执行科学工作流。
表1
provider
表示部署该计算环境的某一个具体的云计算平台
vm_size
表示需要创建的虚拟机的大小
vm_number
表示该计算环境拥有的虚拟机个数
description
表示描述该计算环境的特征以及用途
run_list
表示需要安装的科学软件的集合
package
表示每个科学软件
version
表示科学软件的版本号
表2
name
表示该科学软件的名称
version
表示需要安装的版本号
dependencies
表示该科学软件所依赖的其他应用软件
actions
表示安装配置该科学软件的具体行为动作
create_directory
新建目录
8 -->
create_user
新建用户
download_package
下载软件包
extract_package
解压软件包
set_environment
设置环境变量
shell_command
允许直接执行shell命令
表3
task
表示工作流中一个具体的科学计算步骤
connector
表示计算步骤间的先后执行顺序
name
表示该计算步骤的名称
command
元素表示具体的命令行执行程序
origin
元素表示先行任务
destination
表示后继任务