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。