1. 區別
類別 | AutoCluster | Cluster |
建立 | 作業啟動時自動建立 | 需要事先建立叢集,建立叢集時需要指定ImageId和InstanceType,還有需要的機器台數。 |
使用 | 提交作業時指定ImageId和InstanceType,還有需要的機器台數 | 提交作業時指定叢集ID |
釋放 | 作業完成後自動釋放 | 需要手動刪除. 如果您不再使用叢集,請刪除,不然會一直收費。 |
2. 如何使用 Cluster
2.1. 使用 Python SDK
# 使用clusterId就無需使用AutoCluster
job_desc['DAG']['Tasks']['my-task']['ClusterId'] = "cls-xxxxxxx"
2.2. 使用 Java SDK
以下是程式碼片段:
// 使用clusterId就無需使用AutoCluster
desc.setClusterId("cls-xxxxxxx");
2.3. 使用命令列
# 使用 clusterId
bcs sub "python main.py" -c cls-0101010299123
3. 如何使用 AutoCluster
3.1. 使用 Python SDK
...
autoCluster = {
'ImageId': 'img-ubuntu',
'InstanceType': 'ecs.sn1.medium'
}
...
job_desc['DAG']['Tasks']['my-task']['AutoCluster'] = autoCluster
...
3.2. 使用 Java SDK
以下是程式碼片段:
AutoCluster autoCluster = new AutoCluster();
autoCluster.setImageId("img-ubuntu");
autoCluster.setInstanceType("ecs.sn1.medium");
TaskDescription desc = new TaskDescription();
desc.setAutoCluster(autoCluster);
3.3. 使用命令列
# 使用 Auto Cluster
bcs sub "python main.py" -c img=img-ubuntu:type=ecs.sn1.medium
FAQ
我應該使用 AutoCluster 還是 Cluster?
使用者提交作業時,如果指定一個Cluster ID,那麼作業的任務運行時會被調度到這個Cluster中運行。如果沒有指定叢集,則可以使用AutoCluster配置,指定 鏡像和 執行個體類型即可。任務運行時會自動建立相應的Cluster,運行完成後自動釋放掉。
什麼情況下應該使用 Cluster?
如果你有很多作業(Job)要處理,可以考慮使用Cluster。
比如有100個作業要運行,你可以建立一個10台VM的Cluster,將100個作業全部提交到這個叢集,然後只需等待即可, 系統會在每個任務完成後自動調度下一個任務運行。全部運行完成後,你需要手動釋放(刪除)掉叢集。這樣可以節省時間和費用。
什麼情況下使用 AutoCluster?
AutoCluster在提交作業時指定需要的執行個體數和執行個體規格,實際運行任務的時候系統自動建立叢集,運行任務完成後自動釋放。不在乎等待時間長,或者作業較少情況下,可以使用AutoCluster。