全部产品
阿里云办公

提交作业

更新时间:2018-02-26 21:52:31

1. 提交作业

(1) 最简单的作业

如果您已经按照准备工作里的步骤配置了默认镜像、实例类型和网络类型,可以通过以下的简单命令提交一个作业。

  1. bcs sub "echo 123" # 提交一个单任务作业,运行: echo 123

如果您没有对命令行工具进行过默认配置,需要在提交的时候指定更多的选项。

  1. bcs sub "echo 123" -t ecs.sn1ne.large -i img-ubuntu-vpc --vpc_cidr_block 192.168.0.0/16

文档的其余示例假设您已经执行了默认的配置步骤。

(2) 提交一个python脚本作业

  1. bcs sub "python test.py" -p ./test.py # -p 表示在作业提交前,将 test.py 打包到 worker.tar.gz,然后上传到OSS.

(3) 提交一个目录(多文件)的作业

一般这种情况:src目录下有多个文件, 如:

  1. src
  2. |-- test.py
  3. |-- dep.py

而 test.py 需要依赖dep.py, 则可以将整个目录一起打包

  1. bcs sub "python test.py" -p ./src/ # 将src目录下的所有文件打包到 worker.tar.gz, 然后上传到OSS,再提交作业

当然,您也可以一次指定多个文件(逗号隔开):

  1. cd src #进入 src 目录
  2. bcs sub "python test.py" -p test.py,dep.py # 将这个2个文件打包到 worker.tar.gz

如果您没有进入src目录, 则需要这样提交:

  1. bcs sub "python test.py" -p src/test.py,src/dep.py # 将这个2个文件打包到 worker.tar.gz

然后您可以使用命令查看worker.tar.gz的内容:

  1. tar -tvf worker.tar.gz

应该是这样的:

  1. test.py
  2. dep.py

(4) 使用挂载任务程序的方式提交作业

如果我把 test.py 上传到 oss://mybucket/test/test.py,我可以把oss://mybucket/test/ 挂载到VM的本地目录如: /home/admin/test/, 然后我就可以使用 “python /home/admin/test/test.py” 命令运行了。

这么提交即可:

  1. 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 查看帮助

2. 其他技巧

(1) 挂载输入数据

假如我的数据已经上传到 oss://my-bucket/inputs/ 目录下面.

  1. 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/

(2) 程序运行结果使用挂载自动上传

我的程序会将运行的结果写到 /home/admin/outputs/ 目录下,我想把这个目录下面的所有数据上传到oss。

  1. 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/

(3) 使用自定义镜像和实例类型

  1. 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}, 不指定则使用使用默认镜像和默认实例类型

(4) 使用集群

  1. bcs sub "python test.py" -p ./src/ -c cls-xxxxxxx
  • -c cls-xxxxxxx 表示使用集群ID cls-xxxxxxx

更多请看如何使用集群.

(5) 使用Docker

  1. 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

(6) 自定义磁盘

  1. 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,数据盘大小的取值范围限制为:[5-1024]GB)。

3. 查看作业

请参考如何查看作业