(在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
1. 简要说明
批量计算 Batch 的作业配置以 JSON 格式提供,下面给出这个配置的简要说明,下面的作业包含2个任务:
{
"JobName": "TestJob",
"JobDescription": "for test ",
"Priority": "1",
"Tasks": [
{
"TaskName": "Task1",
"Application": {
"DeliveryForm": "LOCAL",
"Command": "echo hello"
},
"ComputeEnv": {
"EnvType": "MANAGED",
"EnvData": {
"InstanceType": "S1.SMALL1",
"ImageId": "img-m4q71qnf",
}
},
"RedirectInfo": {
"StdoutRedirectPath": "cos://dondonbatchv5- 1251783334.cosgz.myqcloud.com/logs/",
"StderrRedirectPath": "cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/logs/"
},
"Authentications": [
{
"Scene": "COS",
"SecretId": "***",
"SecretKey": "***"
}
]
},
{
"TaskName": "Task2",
"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": "img-m4q71qnf",
"VirtualPrivateCloud": {
"VpcId": "vpc-cg18la4l",
"SubnetId": "subnet-8axej2jc"
},
"SystemDisk": {
"DiskType": "CLOUD_BASIC",
"DiskSize": 50
},
"DataDisks": [
{
"DiskType": "CLOUD_BASIC",
"DiskSize": 50
}
]
}
},
"RedirectInfo": {
"StdoutRedirectPath": "cos://dondonbatchv5- 1251783334.cosgz.myqcloud.com/logs/",
"StderrRedirectPath": "cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/logs/"
},
"MaxRetryCount": 1,
"Authentications": [
{
"Scene": "COS",
"SecretId": "***",
"SecretKey": "***"
}
]
}
],
"Dependences": [
{
"StartTask": "Task1",
"EndTask": "Task2"
}
]
}
2. 详细说明
I. 作业(Job)
作业是 Batch 提交的单元,除了本身信息,还包含了一个或者多个任务(Task)的信息以及 Task 之间的依赖关系。
名称 |
类型 |
是否必选 |
描述 |
JobName |
String |
否 |
作业名称 |
JobDescription |
String |
否 |
作业描述 |
Priority |
Integer |
是 |
作业优先级,任务(Task)和任务实例(TaskInstance)会继承作业优先级 |
Tasks.N |
array of Task objects |
是 |
任务信息 |
Dependences.N |
array of Dependence objects |
否 |
依赖信息 |
II. 任务(Task)
一个作业可以包含多个任务,任务主要描述了批处理数据计算中,实际计算过程依赖的环境(机型、系统、镜像)、执行的代码包和命令行、存储、网络等相关信息。
名称 |
类型 |
是否必选 |
描述 |
示例 |
TaskName |
String |
是 |
任务名称,在一个作业内部唯一 |
Task1 |
TaskInstanceNum |
Integer |
是 |
任务实例运行个数 |
1 |
Application |
Application object |
是 |
应用程序信息 |
- |
ComputeEnv |
ComputeEnv object |
是 |
运行环境信息 |
- |
RedirectInfo |
RedirectInfo object |
是 |
重定向路径 |
- |
InputMappings |
array of InputMapping object |
否 |
输入映射 |
- |
OutputMappings |
array of OutputMapping object |
否 |
输出映射 |
- |
Authentications |
array of Authentication object |
否 |
授权信息 |
- |
MaxRetryCount |
Integer |
否 |
任务失败后的最大重试次数 |
3 |
Timeout |
Integer |
否 |
任务启动后的超时时间,单位秒 |
3600 |
Application
名称 |
类型 |
是否必选 |
描述 |
示例 |
Command |
String |
是 |
任务执行命令 |
|
DeliveryForm |
String |
是 |
应用程序的交付方式 |
LOCAL 本地,PACKAGE 远程代码包 |
PackagePath |
String |
否 |
远程代码包路径,必须 .tgz 格式 |
http://batchdemo-1251783334.cosgz.myqcloud.com/codepkg/codepkg.tgz (仅 PACKAGE 方式) |
ComputeEnv
名称 |
类型 |
是否必选 |
描述 |
示例 |
EnvType |
String |
是 |
计算环境管理类型,包括托管和非托管两种 |
LOCAL 本地,PACKAGE 远程代码包 |
EnvData |
EnvData object |
是 |
计算环境具体参数 |
- |
EnvData
名称 |
类型 |
是否必选 |
描述 |
示例 |
InstanceType |
String |
是 |
CVM实例类型,托管类型必填 |
S1.SMALL1 |
ImageId |
String |
是 |
CVM镜像 ID,托管类型必填 |
img-m4q71qnf |
others |
others |
否 |
参考 CVM API文档 创建实例 提供的参数 |
支持 SystemDisk、DataDisks、VirtualPrivateCloud 等 |
RedirectInfo
名称 |
类型 |
是否必选 |
描述 |
示例 |
StdoutRedirectPath |
String |
否 |
标准输出重定向路径 |
cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/logs/ |
StderrRedirectPath |
String |
否 |
标准错误重定向路径 |
cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/logs/ |
名称 |
类型 |
是否必选 |
描述 |
示例 |
SourcePath |
String |
是 |
源端路径 |
cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/input/ |
DestinationPath |
String |
是 |
目的端路径 |
/data/input/ |
OutputMapping
名称 |
类型 |
是否必选 |
描述 |
示例 |
SourcePath |
String |
是 |
源端路径 |
/data/output/ |
DestinationPath |
String |
是 |
目的端路径 |
cos://dondonbatchv5-1251783334.cosgz.myqcloud.com/output/ |
Authentication
如果填写的 COS 路径(存储映射、日志重定向)是本人 COS 地址,无需填写。需要访问其他人的 COS 时,需要填写对应的访问密钥。
名称 |
类型 |
是否必选 |
描述 |
Scene |
String |
是 |
授权场景,例如COS |
SecretId |
String |
是 |
SecretId |
SecretKey |
String |
是 |
SecretKey |
III. 任务依赖(Dependence)
描叙任务之间的先后关系,假设作业包含 2 个任务, StartTask 为 Task1,EndTask 为 Task2,则会在执行完 Task1 之后才会启动 Task2,Task2 执行完则作业执行完毕。
名称 |
类型 |
是否必选 |
描述 |
示例 |
StartTask |
String |
是 |
依赖关系的起点任务名称 |
Task1 |
EndTask |
String |
是 |
依赖关系的终点任务名称 |
Task2 |