1013
微信
多任务支持__命令行工具_批量计算-阿里云
可以使用 config 文件指定多个任务和依赖关系,然后使用下面的命令提交:
bcs sub --file job.cfg # 文件名可以随意定
1. 单个任务支持
job.cfg 内容:
[taskname]
cmd=python test.py
job_name=demo
cluster=img=img-ubuntu:type=bcs.a2.large
description=test job
nodes=1
pack=./src/
read_mount=oss://bucket/input/:/home/input/
write_mount=oss://bucket/output/:/home/output/
- 这个配置文件含有一个section: [taskname], 这个taskname将作为task名提交。
- 除了cmd 和 job_name 外,其他的选项, 都是通过 bcs sub -h 看到的长选项名称, 等同于使用命令—${option}。
2. 多任务支持
config 文件也可以配置多个任务,可以指定任务间依赖关系。
job.cfg 内容:
[DEFAULT]
job_name=log-count
description=demo
force=True
deps=split->count;count->merge
#下面是任务公共配置
env=public_key:value,key2:value2
read_mount=oss://bucket/input/:/home/input/
write_mount=oss://bucket/output/:/home/output/
pack=./src/
[split]
cmd=python split.py
cluster=img=img-ubuntu:type=bcs.a2.large
nodes=1
[count]
cmd=python count.py
cluster=img=img-ubuntu:type=bcs.b4.xlarge
nodes=3
[merge]
cmd=python merge.py
cluster=img=img-ubuntu:type=bcs.a2.large
nodes=1
- [DEFAULT] section中指定job级别的配置, 其他section指定task配置, 其他section名为task名
- 配置项优先级: 直接在命令行中的—${option}; 优先级最高,其次task section中指定的,最后是DEFAULT section中指定的。
- env, read_mount, write_mount, mount 这4个配置项, 可merge, 其他配置项遇到高优先级直接被覆盖
- deps=split->count;count->merge 指定依赖, split任务运行完成后,再运行count,count运行完成后,再运行merge.
- cluster配置用的img和type,不同region支持是不一样的,请根据当前region具体情况设置。
(1) 关于deps
如果DAG如下:
则deps配置:
deps=split->count1,count2;count1->merge;count2->merge
每个dep是一对多的形式: task1->task2,taks3
多个task之间用逗号隔开,多个dep用分号隔开。
(2) 关于 pack
./src/
|-- split.py
|-- ...
如果指定目录:pack=./src/, 则打包src下面的所有文件到 worker.tar.gz, 指定cmd时,需要从 ./src/目录下开始指定,如: cmd=python split.py
如果指定文件: pack=./src/split.py, 则只打包文件到worker.tar.gz, 指定cmd时,只需要指定文件名, 如: cmd=python split.py
pack可以在[DEFAULT]这个section中配置,也可以在每个task中配置, 当然也可以在命令行中指定。
(3) 关于 mount
read_mount 为只读挂载,将oss目录挂载到运行程序的虚拟机的文件系统中,linux可以挂载为一个目录,window下只能挂载为一个Driver,如:”E:”。
如果挂载多个,可以使用英文逗号隔开,如:read_mount=oss://bucket/input/:/home/input/,oss://bucket/input2/:/home/input2/
。write_mount和mount也是如此。
write_mount 为可写挂载,将oss目录映射到运行程序的虚拟机的目录,只能映射为一个目录,如果这个目录不存在,需要程序创建一下。写入到这个目录的所有文件将会被上传到相应的oss目录。
mount是同时指定read_mount和write_mount到相同的目录,一般不推荐使用。
(4) 关于cluster
有2种格式:
AutoCluster格式:
cluster=img=<img-id>:type=<instance-type>
AutoCluster指定任务运行时会自动创建相应配置的集群,运行完成后自动释放掉。
Cluster格式:
cluster=<cluster-id>
运行:bcs c 可以查看我的集群,如果没有,可以自行创建。
如:
bcs cc <cluster-name> -i <img-id> -t <instance-type> -n 3
- -n 3 表示期望启动3台虚拟机来运行程序
- -i img-id 指定image ID
- -t instance-type 指定实例类型,可以使用 bcs it 查看可用的实例类型
- 其他选项可以使用 bcs cc -h 查看说明。
使用集群可以大大缩短作业启动时间,但是由于集群是一直运行着的,会一直计费,请自行权衡。
(5) 关于docker
格式如:
docker=myubuntu@oss://bucket/dockers/
使用docker,需要支持docker的ImageId才能运行成功。如果你没有指定cluster,默认的imageId是支持Docker的,或者你显式指定也行,或者使用clusterId,但是这个cluster的ImageId也要支持docker才行。
这里的myubuntu全名为:localhost:5000/myubuntu,制作docker镜像的时候,前缀必须为localhost:5000/, 因此这里可以省略掉前缀。后面的oss目录,是OSS私有docker镜像仓库目录,详情请看如何使用docker。
(6) 关于nodes
nodes 表示指定使用多少台虚拟机运行任务程序。
(7) 关于force
force 为 True,表示如果某台虚拟机运行程序出错,整个作业不会失败,继续运行。为False,则整个作业失败。默认为False。
最后更新:2016-12-05 17:56:03
上一篇:
查看作业__命令行工具_批量计算-阿里云
下一篇:
多实例并发__命令行工具_批量计算-阿里云
服务端签名直传并设置上传回调__Web端直传实践_最佳实践_对象存储 OSS-阿里云
管理对象生命周期__管理文件_开发人员指南_对象存储 OSS-阿里云
RouterInterfaceItemType__数据类型_API 参考_云服务器 ECS-阿里云
只读实例延迟切断__开发手册_分布式关系型数据库 DRDS-阿里云
LogSearch-查询__Getting-Started_日志服务-阿里云
查询API分组详情__API分组相关接口_API_API 网关-阿里云
C-SDK使用(FreeRTOS)__SDK使用参考_设备端接入手册_阿里云物联网套件-阿里云
新增媒体__媒体接口_API使用手册_视频点播-阿里云
Java沙箱__MapReduce_大数据计算服务-阿里云
如何确保负载均衡后端的多台ECS之间的数据同步呢?__ECS配置相关_技术运维分享_负载均衡-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云