全部产品
Search
文档中心

批量计算:使用集群

更新时间:Sep 22, 2022

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。