批量计算目前支持命令行,控制台和SDK提交作业,本文介绍将作业提交到批量计算的相关操作。
提交作业
最简单的作业
如果您已经按照准备工作里的步骤配置了默认镜像、实例类型和网络类型,可以通过以下的简单命令提交一个作业。
bcs sub "echo 123" # 提交一个单任务作业,运行: echo 123
如果您没有对命令行工具进行过默认配置,需要在提交的时候指定更多的选项。
bcs sub "echo 123" -t ecs.sn1ne.large -i img-ubuntu-vpc --vpc_cidr_block 192.168.0.0/16
文档的其余示例假设您已经执行了默认的配置步骤。
提交一个python脚本作业
bcs sub "python test.py" -p ./test.py # -p 表示在作业提交前,将 test.py 打包到 worker.tar.gz,然后上传到OSS。
提交一个目录(多文件)的作业
一般这种情况:src目录下有多个文件, 如:
src
|-- test.py
|-- dep.py
而 test.py 需要依赖dep.py, 则可以将整个目录一起打包。
bcs sub "python test.py" -p ./src/ # 将src目录下的所有文件打包到 worker.tar.gz, 然后上传到OSS,再提交作业
当然,您也可以一次指定多个文件(逗号隔开):
cd src #进入 src 目录
bcs sub "python test.py" -p test.py,dep.py # 将这个2个文件打包到 worker.tar.gz
如果您没有进入src目录, 则需要这样提交:
bcs sub "python test.py" -p src/test.py,src/dep.py # 将这个2个文件打包到 worker.tar.gz
然后您可以使用命令查看worker.tar.gz的内容:
tar -tvf worker.tar.gz
应该是这样的:
test.py
dep.py
使用挂载任务程序的方式提交作业
如果我把 test.py 上传到 oss://mybucket/test/test.py,我可以把oss://mybucket/test/ 挂载到VM的本地目录如: /home/admin/test/, 然后我就可以使用 “python /home/admin/test/test.py” 命令运行了。
这么提交即可:
bcs sub "python /home/admin/test/test.py" -r oss://mybucket/test/:/home/admin/test/
其中参数 -r oss://mybucket/test/:/home/admin/test/
,表示只读挂载,将oss://mybucket/test/ 挂载到 /home/admin/test/。
这样就无需打包成 worker.tar.gz了。
更多提交作业的信息请用: bcs sub -h 查看帮助
其他技巧
挂载输入数据
假如我的数据已经上传到 oss://my-bucket/inputs/ 目录下面。
bcs sub "python test.py" -p ./src/ -r oss://my-bucket/inputs/:/home/admin/inputs/
-r 表示只读挂载,将 oss目录oss://my-bucket/inputs/ 挂载到 /home/admin/inputs/, 你的程序可以向读取本地文件一样读取/home/admin/inputs/目录下面的文件
所有挂载的目录,不能是系统目录, 如:/bin, /usr等,建议挂载到/home/下面.
如要挂载多个目录,使用英文逗号隔开, 如:
-r oss://my-bucket/inputs/:/home/admin/inputs/,oss://my-bucket/inputs2/:/home/admin/inputs2/
如果是 Windows 镜像,可以使用下面的命令来挂载:
bcs sub "python test.py" -p ./src/ -r oss://my-bucket/inputs/:D
程序运行结果使用挂载自动上传
我的程序会将运行的结果写到 /home/admin/outputs/ 目录下,我想把这个目录下面的所有数据上传到oss。
bcs sub "python test.py" -p ./src/ -r oss://my-bucket/inputs/:/home/admin/inputs/ -w oss://my-bucket/outputs/:/home/admin/outputs/
-w 表示可写挂载,写入到这个目录下的数据,将会在程序运行完后,由系统自动上传到对应的 oss 目录下。
所有挂载的目录,不能是系统目录, 如:/bin, /usr等,建议挂载到/home/下面.
如要挂载多个目录,使用英文逗号隔开, 如:
-w oss://my-bucket/outputs/:/home/admin/outputs/,oss://my-bucket/outputs2/:/home/admin/outputs2/
使用自定义镜像和实例类型
bcs sub "python test.py" -p ./src/ -c img=img-ubuntu-vpc:type=ecs.sn1ne.large
-c 表示使用集群,后面可以指定集群ID,也可以指定AutoCluster配置。 其中AutoCluster配置格式如:
img=${ImageId}:type=${InstanceType}
。type=ecs.sn1ne.large 表示使用实例类型,可以用
bcs it
查看支持的实例类型列表。可以只指定
-c img=${ImageId}
或者只指定-c type=${InstanceType}
, 不指定则使用默认镜像和默认实例类型。
使用集群
bcs sub "python test.py" -p ./src/ -c cls-xxxxxxx
-c cls-xxxxxxx 表示使用集群ID cls-xxxxxxx
更多请看如何使用集群.
使用Docker
bcs sub "python test.py" -p ./src/ --docker myubuntu@oss://my-bucket/dockers/
myubuntu 是 localhost:5000/myubuntu 的简写, oss://my-bucket/dockers/ 表示oss docker 镜像仓库的路径。
有关如何使用Docker的详细信息请参考使用 docker。
自定义磁盘
bcs sub "python test.py" --disk system:cloud_efficiency:50,data:cloud_efficiency:200
只在使用AutoCluster时有效, 支持系统盘配置和一块数据盘(可选)的配置, 使用方法如:
—disk system:cloud_efficiency:40,data:cloud_efficiency:50:/home/disk1
, 中间用逗号隔开。也可以只指定系统盘,或只指定数据盘。如:—disk system:cloud_efficiency:40
默认只挂载一个系统盘,大小为40GB。
系统盘配置格式:system:< cloud_efficiency|cloud_ssd>:<40-500>, 举例:system:cloud_efficiency:40, 表示系统盘挂载40GB的高效云盘。
数据盘配置格式:data:< cloud_efficiency|cloud_ssd>:<5-2000>:,举例:data:cloud_ssd:50:/home/disk1, 表示挂载一个50GB的SSD云盘作为数据盘, Windows下只能挂载到驱动,如挂载到E盘:data:cloud_ssd:50:E。
说明:对于bcs开头的老专有实例,磁盘类型请使用ephemeral,数据盘大小的取值范围限制为:5GB~1024GB)。
查看作业
请参考如何查看作业。