一、前提条件
请参见 开始前的准备 中的步骤做好准备。
二、安装和配置 TCCLI
1. 请参见 安装 TCCLI 安装命令行工具。
2. 执行以下命令,验证 TCCLI 是否成功安装。
tccli batch help
返回结果如下,则成功安装。
NAME batchDESCRIPTION batch-2017-03-12USEAGE tccli batch <action> [–param…]OPTIONS help show the tccli batch help info –version specify a batch api versionAVAILABLE ACTION DescribeComputeEnv 用于查询计算环境的详细信息 CreateTaskTemplate 用于创建任务模板
3. 请按照 配置 TCCLI 配置命令行工具。
三、创建保存结果的 COS Bucket
在这篇示例中,返回结果将直接输出到系统标准输出中,而 Batch 可以采集系统标准输出 stdout 和 stderr,并在任务结束后将信息上传到已指定的 COS Bucket 中,你需提前创建 Bucket 及用于保存信息的子文件夹。
请参见 准备 COS 目录 创建对应 COS Bucket 和子文件夹。
四、作业配置简介
你可获取并修改提供的示例,作为个人账号下可执行的 Batch 计算环境。请参考以下内容了解计算环境各项配置的含义:
tccli batch SubmitJob –version 2017-03-12 –Job '{ "JobName": "TestJob", // 作业名称 "JobDescription": "for test ", // 作业描述 "Priority": "1", // 作业优先级 "Tasks": [ // 任务列表(本例仅一个任务) { "TaskName": "Task1", // 任务1名称 "Application": { // 任务执行命令 "DeliveryForm": "LOCAL", // 执行本地命令 "Command": "python -c \\"fib=lambda n:1 if n<=2 else fib(n-1)+fib(n-2); print(fib(20))\\" " // 命令具体内容(斐波拉契求和) }, "ComputeEnv": { // 计算环境配置 "EnvType": "MANAGED", // 计算环境类型,托管型和非托管型 "EnvData": { // 具体配置(当前托管型,可参照CVM 创建实例说明) "InstanceType": "S1.SMALL1", // CVM 实例类型 "ImageId": "img-m4q71qnf", // CVM 镜像 ID(需替换) } }, "RedirectInfo": { // 标准输出重定向配置 "StdoutRedirectPath": "cos://dondonbatchv5-125xxxxxx4.cosgz.myqcloud.com/logs/", // 标准输出(需替换) "StderrRedirectPath": "cos://dondonbatchv5-125xxxxxx4.cosgz.myqcloud.com/logs/" // 标准错误(需替换) } } ]}'–Placement'{ "Zone": "ap-guangzhou-6" // 可用区(可能需替换)}'
五、SubmitJob 命令
Batch 的 SubmitJob 命令示例:
tccli batch SubmitJob –version 2017-03-12 –Job '{"JobName": "TestJob", "JobDescription": "for test", "Priority": "1", "Tasks": [{"TaskName": "Task1", "TaskInstanceNum": 1, "Application": {"DeliveryForm": "LOCAL", "Command": "python -c \\"fib=lambda n:1 if n<=2 else fib(n-1)+fib(n-2); print(fib(20))\\" "}, "ComputeEnv": {"EnvType": "MANAGED", "EnvData": {"InstanceType": "S1.SMALL1", "ImageId": "待替换" } }, "RedirectInfo": {"StdoutRedirectPath": "待替换", "StderrRedirectPath": "待替换"}, "MaxRetryCount": 1 } ] }' –Placement '{"Zone": "ap-guangzhou-6"}'
SubmitJob 命令包含以下3个参数:
| 参数 | 描述 |
| version | 版本号,目前固定填写2017-03-12 |
| Job | 作业配置,JSON 格式,详细字段意义见示例 |
| Placement | 执行作业的可用区 |
·在示例中已标识需替换的字段,你需要替换为个人信息后才可以执行。例如自定义镜像 ID,VPC 相关信息,COS Bucket 地址和对应 SecretId、SecretKey,可参见 修改配置。
·请使用示例后方的复制按钮,防止复制内容不完整。请将待替换信息全部替换后再执行命令。
·详细 Job 配置说明请参见 作业配置说明 。
六、填写 ImageId
"ImageId": "待替换"
你需要使用基于 Cloud-init 服务和配置过的镜像,提供可直接使用镜像如下:
·CentOS 6.5 镜像:ID 为 img-m4q71qnf。
·Windows Server 2012 的镜像: ID 为 img-er9shcln。
七、配置 StdoutRedirectPath 和 StderrRedirectPath
"StdoutRedirectPath": "待替换", "StderrRedirectPath": "待替换"
请将在 创建保存结果的 COS Bucket 获取的访问域名填写到 StdoutRedirectPath 和 StderrRedirectPath 中。
八、修改可用区(可选)
–Placement '{"Zone": "ap-guangzhou-6"}'
示例中指定在广州六区申请资源,你可以根据 TCCLI 中配置的默认地域,选择相应的可用区并申请资源。
地域和可用区的详细信息请查看 地域和可用区。
九、查看结果
返回结果如下,则表示执行成功。
{ "RequestId": "db84b7f8-ff8e-4c11-81c1-9a3b02652a46", "JobId": "job-cr8qyyh9"}
·执行以下命令,通过 DescribeJob 查看刚才提交的任务信息。
$ tccli batch DescribeJob –version 2017-03-12 –JobId job-cr8qyyh9{ "EndTime": "2019-10-08T07:28:07Z", "JobState": "SUCCEED", "TaskInstanceMetrics": { … }, "Zone": "ap-guangzhou-6", "TaskMetrics": { … }, "JobName": "TestJob", "Priority": 1, "RequestId": "0e5c5ea5-ef25-4f90-b355-cfaa8057d473", "TaskSet": [ { … } ], "StateReason": null, "JobId": "job-cr8qyyh9", "DependenceSet": [], "CreateTime": "2019-10-08T07:27:17Z"}
·执行以下命令,通过 DescribeJobs 查看当前地域作业列表。
$ tccli batch DescribeJobs –version 2017-03-12
十、更多功能
文中的示例为单任务的作业,仅展示了最基本的功能,未使用远程存储映射能力,你可以通过以下文档或参见 API 文档 深入了解并使用 Batch:
·更简单的操作方法:Batch 的能力强大,配置项较多,通过脚本来调用会更加简便快捷,请参见 前置准备 和 简单开始 开始尝试这种方式。
·执行远程代码包:Batch 提供自定义镜像 + 远程代码包 + 命令行的方式,在技术上全方位覆盖你的业务需要,详情请参见 执行远程代码包。
·远程存储映射:Batch 在存储访问上进行优化,将对远程存储服务的访问简化为对本地文件系统操作,详情请参见 远程存储映射。