閱讀1013 返回首頁    go 小米 go 小米6


多任務支持__命令行工具_批量計算-阿裏雲

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

  1. bcs sub --file job.cfg # 文件名可以隨意定

1. 單個任務支持

job.cfg 內容:

  1. [taskname]
  2. cmd=python test.py
  3. job_name=demo
  4. cluster=img=img-ubuntu:type=bcs.a2.large
  5. description=test job
  6. nodes=1
  7. pack=./src/
  8. read_mount=oss://bucket/input/:/home/input/
  9. write_mount=oss://bucket/output/:/home/output/
  • 這個配置文件含有一個section: [taskname], 這個taskname將作為task名提交。
  • 除了cmd 和 job_name 外,其他的選項, 都是通過 bcs sub -h 看到的長選項名稱, 等同於使用命令—${option}。

2. 多任務支持

config 文件也可以配置多個任務,可以指定任務間依賴關係。

job.cfg 內容:

  1. [DEFAULT]
  2. job_name=log-count
  3. description=demo
  4. force=True
  5. deps=split->count;count->merge
  6. #下麵是任務公共配置
  7. env=public_key:value,key2:value2
  8. read_mount=oss://bucket/input/:/home/input/
  9. write_mount=oss://bucket/output/:/home/output/
  10. pack=./src/
  11. [split]
  12. cmd=python split.py
  13. cluster=img=img-ubuntu:type=bcs.a2.large
  14. nodes=1
  15. [count]
  16. cmd=python count.py
  17. cluster=img=img-ubuntu:type=bcs.b4.xlarge
  18. nodes=3
  19. [merge]
  20. cmd=python merge.py
  21. cluster=img=img-ubuntu:type=bcs.a2.large
  22. 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配置:

  1. deps=split->count1,count2;count1->merge;count2->merge

每個dep是一對多的形式: task1->task2,taks3

多個task之間用逗號隔開,多個dep用分號隔開。

(2) 關於 pack

  1. ./src/
  2. |-- split.py
  3. |-- ...
  • 如果指定目錄: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是同時指定read_mount和write_mount到相同的目錄,一般不推薦使用。

(4) 關於cluster

有2種格式:

AutoCluster格式:

  1. cluster=img=<img-id>:type=<instance-type>

AutoCluster指定任務運行時會自動創建相應配置的集群,運行完成後自動釋放掉。

Cluster格式:

  1. cluster=<cluster-id>

運行:bcs c 可以查看我的集群,如果沒有,可以自行創建。

如:

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

格式如:

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

最後更新:2016-12-05 17:56:03

  上一篇:go 查看作業__命令行工具_批量計算-阿裏雲
  下一篇:go 多實例並發__命令行工具_批量計算-阿裏雲