釋放 AI 的強大力量

100 萬免費代幣

88% 價格優惠

立即啟用
本文由簡體中文內容自動轉碼而成。阿里雲不保證此自動轉碼的準確性、完整性及時效性。本文内容請以簡體中文版本為準。

多任務支援

更新時間:2024-07-05 23:18
說明

可以使用 config 檔案指定多個任務和依賴關係,然後使用下面的命令提交:

bcs sub --file job.cfg    # 檔案名稱可以隨意定

1. 單個任務支援

job.cfg 內容:

[taskname]
cmd=python test.py
job_name=demo
cluster=img=img-ubuntu:type=ecs.sn1.medium
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=ecs.sn1.medium
nodes=1

[count]
cmd=python count.py
cluster=img=img-ubuntu:type=ecs.sn1.medium
nodes=3

[merge]
cmd=python merge.py
cluster=img=img-ubuntu:type=ecs.sn1.medium
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如下:

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可以用於 NAS 的掛載,比如:

mount=nas://xxxxxx-yyy50.cn-shenzhen.nas.aliyuncs.com:/:/home/mnt/:true
vpc_id=vpc-xxxxxxxxxxyyyyyy
vpc_cidr_block=192.168.0.0/16
說明

注意:使用 NAS 時要指定 vpc_id 和 cidr_block。

這裡mount資訊中的 true/false 指的是是否支援可寫。

(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。

  • 本頁導讀 (0, M)
  • 1. 單個任務支援
  • 2. 多任務支援
文檔反饋
phone 聯絡我們

立即和Alibaba Cloud在線服務人員進行交談,獲取您想了解的產品信息以及最新折扣。

alicare alicarealicarealicare