全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
批量计算

提交作业

更新时间:2017-06-07 13:26:11

1. 提交作业

(1) 最简单的作业

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

(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:type=ecs.c2.large
  • -c 表示使用集群,后面可以指定集群ID,也可以指定AutoCluster配置。 其中AutoCluster配置格式如:img=${ImageId}:type=${InstanceType}

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

  • type=ecs.c2.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

(6) 自定义磁盘

  1. bcs sub "python test.py" --disk system:ephemeral:50,data:cloud:200
  • 只在使用AutoCluster时有效, 支持系统盘配置和一块数据盘(可选)的配置, 使用方法如: —disk system:ephemeral:40,data:cloud:50:/home/disk1, 中间用逗号隔开。也可以只指定系统盘,或只指定数据盘。如:—disk system:ephemeral:40

  • 默认只挂载一个系统盘:类型为ephemeral,大小40GB.

  • 系统盘配置格式: system:< cloud|ephemeral>:< 40-500>, 举例: system:cloud:40, 表示系统盘挂载40GB的云盘.

  • 数据盘配置格式: data:< cloud|ephemeral>:< 5-2000>:< mount-point>,举例: data:cloud:5:/home/disk1, 表示挂载一个5GB的云盘作为数据盘, window下只能挂载到驱动,如挂载到E盘: data:cloud:5:E.

  • (注意: 数据盘使用ephemeral的时候,size取值范围限制为:[5-1024]GB)

3. 查看作业

如何查看作业

本文导读目录