全部產品
Search
文件中心

Batch Compute:提交作業

更新時間:Jul 06, 2024

批次運算目前支援命令列,控制台和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}

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

查看作業

請參考如何查看作業