提交作业

批量计算目前支持命令行,控制台和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}

  • img=img-ubuntu-vpc 表示使用镜像,您也可以指定自定义镜像

  • 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)。

查看作业

请参考如何查看作业