WDL 怎么运行
执行引擎 Cromwell
Cromwell 是 Broad Institute 开发的工作流管理引擎。具有如下的优势:
- 支持 WDL 和 CWL 两种工作流描述语言
- 多平台支持,包括本地服务器、SGE集群、云计算平台等
- 阿里云批量计算是官方支持的云平台之一
- 丰富的元数据,展示工作流执行过程
- 支持多种高级特性,优化 workflow 的执行
语法检查工具
WDL 编写完成后,在真正执行之前,我们可以使用官方工具进行语法检查:1
java -jar wdltool.jar validate myWorkflow.wdl
使用 Cromwell 运行 WDL
使用 Cromwell 运行 WDL 有两种模式
Run 模式
用来执行单个 WDL,适用于调试初期,快速执行一个WDL。1
$ java -jar cromwell.jar run echo.wdl --inputs input.json
Server 模式
用下面的命令启动一个 HTTP server1
$ java -Dconfig.file=application.conf -jar cromwell.jar server
再使用 RESTful API 提交工作流到 server 执行:1
$ java -jar cromwell.jar submit -t wdl -i input.json -o option.json -h http://localhost:8000
相比 Run 模式,Server 模式有以下优势:
- 可以并行处理多个 workflow,适用于生产环境
- 有 Call caching 等高级特性(下文会讲到),优化 workflow 的执行
- 提供丰富的 workflow metadata,来展示 workflow 的执行过程
注意:不管是使用Run 模式还是 Server模式,要使用批量计算作为后端运行 WDL,都需要对应的配置文件支持,配置文件详解请参考批量计算官方文档或Cromwell 官方文档。