批量計算目前支持命令行,控制臺和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}
。img=img-ubuntu-vpc 表示使用鏡像,您也可以指定自定義鏡像。
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)。
查看作業
請參考如何查看作業。