本文介绍如何使用命令行 TCCLI 来提交一个简单的作业,文中示例为使用 Python 实现对斐波那契数列求和。Python 代码由任务中 Application 参数的 Command 字段指定,返回结果直接输出到任务配置的 stdout 输出地址。
请参考 开始前的准备 中的步骤做好准备。
tccli batch help
返回结果如下,则成功安装。NAME
batch
DESCRIPTION
batch-2017-03-12
USEAGE
tccli batch <action> [--param...]
OPTIONS
help
show the tccli batch help info
--version
specify a batch api version
AVAILABLE ACTION
DescribeComputeEnv
用于查询计算环境的详细信息
CreateTaskTemplate
用于创建任务模板
在本文示例中,返回结果将直接输出到系统标准输出中,而 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-1251783334.cosgz.myqcloud.com/logs/", // 标准输出(需替换)
"StderrRedirectPath": "cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/logs/" // 标准错误(需替换)
}
}
]
}'
--Placement'{
"Zone": "ap-guangzhou-2" // 可用区(可能需替换)
}'
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-2"}'
SubmitJob 命令包含以下3个参数:
参数 | 描述 |
---|---|
version | 版本号,目前固定填写2017-03-12 |
Job | 作业配置,JSON 格式,详细字段意义见示例 |
Placement | 执行作业的可用区 |
"ImageId": "待替换"
您需要使用基于 Cloud-init 服务和配置过的镜像,官方提供可直接使用镜像如下:
"StdoutRedirectPath": "待替换", "StderrRedirectPath": "待替换"
请将在 创建保存结果的 COS Bucket 获取的访问域名填写到 StdoutRedirectPath 和 StderrRedirectPath 中。
--Placement '{"Zone": "ap-guangzhou-2"}'
示例中指定在广州二区申请资源,您可以根据 TCCLI 中配置的默认地域,选择相应的可用区并申请资源。
地域和可用区的详细信息请查看 地域和可用区。
返回结果如下,则表示执行成功。
{
"RequestId": "db84b7f8-ff8e-4c11-81c1-9a3b02652a46",
"JobId": "job-cr8qyyh9"
}
$ tccli batch DescribeJob --version 2017-03-12 --JobId job-cr8qyyh9
{
"EndTime": "2019-10-08T07:28:07Z",
"JobState": "SUCCEED",
"TaskInstanceMetrics": {
...
},
"Zone": "ap-guangzhou-2",
"TaskMetrics": {
...
},
"JobName": "TestJob",
"Priority": 1,
"RequestId": "0e5c5ea5-ef25-4f90-b355-cfaa8057d473",
"TaskSet": [
{
...
}
],
"StateReason": null,
"JobId": "job-cr8qyyh9",
"DependenceSet": [],
"CreateTime": "2019-10-08T07:27:17Z"
}
$ tccli batch DescribeJobs --version 2017-03-12
文中的示例为单任务的作业,仅展示了最基本的功能,未使用远程存储映射能力,您可以通过以下文档或参考 API 文档 深入了解并使用 Batch:
更简单的操作方法:Batch 的能力强大,配置项较多,通过脚本来调用会更加简便快捷,请参考 前置准备 和 简单开始 开始尝试这种方式。
执行远程代码包:Batch 提供自定义镜像 + 远程代码包 + 命令行的方式,在技术上全方位覆盖您的业务需要,详情请参考 执行远程代码包。
远程存储映射:Batch 在存储访问上进行优化,将对远程存储服务的访问简化为对本地文件系统操作,详情请参考 远程存储映射。
使用我们提供的 Demo,采用 Alexnet 模型对10764张图像进行训练对比测试,结果如...
什么是云硬盘备份 您可以通过云备份(Cloud Backup and Recovery,CBR)中的云硬...
云助手是专为云服务器ECS打造的原生自动化运维工具,通过免密码、免登录、无需使...
日前,人民网人民数据(国家大数据灾备中心)与中国经济体制改革研究会互联网与新...
功能说明 如果返回结果中存在 Error 字段,则表示调用 API 接口失败。例如: { "...
本文转载自微信公众号「老王Plus」,作者老王Plus的老王 。转载本文请联系老王Pl...
Vue 3 新增了一条实验性的功能 「单文件组件状态驱动的 CSS 变量」 看到这个,我...
服务器租用 有什么好处了?随着越来越多的服务器提供商服务更加专业化, 服务器...
本文转载自微信公众号「安琪拉的博客」,作者安琪拉的博客 。转载本文请联系安琪...
meta http-equiv="Content-Language" content="zh-CN" meta HTTP-EQUIV="Content...