使用App

App 是阿里云批量计算新推出的一个功能,支持第三方软件封装成 App,供其他用户使用。App 是批量计算中资源配置的模板,包括使用什么镜像,什么实例类型,VM 个数等描述信息。

查看 App

获取 App 列表

bcs a

获取 App 参数

bcs a :cromwell  # 查看详情
bcs a 1          # 或者使用序号也一样

查看 App 详情

说明,只能查看私有的(自己创建的)App 详情。 详情包括软件使用的镜像,运行的命令行等信息。

bcs a my-app 0  # 查看第0个修订版本的详情

创建私有 App

使用 create_app|ca 命令创建私有 App。

使用命令:

bcs create_app|ca <app_name> <cmd> [option]

您可以加个 -h 查看帮助 bcs ca -h

最简单创建 App 的方法

bcs ca my_app "echo 123" -i img-ubuntu

您也可以使用另一种方式: 直接使用 app 描述文件提交:

先准备一个 app 描述文件: ./myapp.json

{
    "Name": "myapp",
    "EnvVars": {},
    "Description": "", 
    "CommandLine": "echo 123",
    "OutputParameters": {}, 
    "VM": {
        "ECSImageId": "img-ubuntu"
    },
    "Daemonize": false, 
    "InputParameters": {}, 
    "Config": {
        "InstanceCount": {
            "Default": 1, 
            "Description": "", 
            "Overwritable": true
        }, 
        "ResourceType": {
            "Default": "OnDemand", 
            "Description": "", 
            "Overwritable": true
        }, 
        "DiskType": {
            "Default": "cloud_efficiency ", 
            "Description": "", 
            "Overwritable": true
        }, 
        "MaxRetryCount": {
            "Default": 0, 
            "Description": "", 
            "Overwritable": true
        }, 
        "Timeout": {
            "Default": 86400, 
            "Description": "", 
            "Overwritable": true
        }, 
        "MinDiskSize": {
            "Default": 40, 
            "Description": "", 
            "Overwritable": true
        }, 
        "MinDataDiskSize": {
            "Default": 100, 
            "Description": "", 
            "Overwritable": true
        }, 
        "DataDiskType": {
            "Default": "cloud_efficiency ", 
            "Description": "", 
            "Overwritable": true
        }, 
        "DataDiskMountPoint": {
            "Default": "/home/mount/", 
            "Description": "", 
            "Overwritable": true
        }, 
        "InstanceType": {
            "Default": "", 
            "Description": "", 
            "Overwritable": true
        }
    }
}

然后通过命令提交:

bcs ca --file myapp.json

还可以指定 option 覆盖 app.json 中的配置:

bcs ca --file myapp.json -t ecs.s3.large

修改和删除

bcs ua -h         # 修改自定义 App 的说明
bcs da -h         # 删除自定义 App 的说明

请使用-h 查看帮助。

提交 App 作业

  • 目前仅支持 AutoCluster 作业,不久将来会支持 Cluster。

使用 asub 命令快速使用 App 提交作业。

bcs asub <app_name> -h  # 查看指定 App 提交作业的参数等, 每个 App 提交参数是不一样的。

如: bcs asub cromwell -h

  • --input_ 开头的 option,用来指定 app 的 input 参数, 您也可以换成 --input-from-file_ 开头, 参数值如果是正确的本地文件路径,该文件将被自动上传到默认的 OSS 路径下面。

  • --output_ 开头的 option,是用来指定 output 参数的。

另外还可以使用 --config 来指定 App config 中的参数,比如:

bcs asub <app_name> --config MinDataDiskSize=800,DataDiskType='cloud_efficiency',DataDiskMountPoint='/home/mount/' --input_input1 oss://your-buckit/input1/ --output_output1 oss://your-bucket/output1/

关于 App 的 config 参数详情,请参考 App 的 API文档

对 cromwell 工作流引擎和 WDL 的支持

批量计算服务提供了公共的 App: cromwell, 用来支持 WDL 编写的工作流程。

您可以使用 gen 命令,快速创建特定的模板代码。 目前(编写此文档时)支持 WDL 和 GATK 两种模板。

举例:

bcs gen ./demo -t wdl

这个命令在当前目录下创建一个 demo 目录,并生成一个简单的 WDL 流程代码。

demo
  |-- src
    |-- hello.wdl
    |-- inputs.json
    |-- options.json
  |-- main.sh     # 提交 App 作业的命令
  |-- Readme.md   # 新手必读

修改 hello.wdl 和 main.sh 中的 OSS 路径,运行 main.sh 提交作业即可。

同理支持 GATK,运行以下命令创建一个 GATK 工程样例:

bcs gen ./demo -t gatk