1. 違い
項目 | AutoCluster | クラスター |
クラスターの作成 | タスクの開始時に自動的に作成されます。 | 事前に手動で作成されます。クラスターのImageId、InstanceType、およびVMの数を指定する必要があります。 |
クラスターの使用 | ジョブの送信時にImageId、InstanceType、およびVMの数を指定します。 | ジョブの送信時にクラスターIDを指定します。 |
クラスターの解放 | すべてのタスクが完了した後に自動的に解放されます。 | 手動で削除します。クラスターが使用されなくなった場合は、削除してください。そうしないと、このクラスターに対して課金されます。 |
2. クラスターの使用方法
2.1. Python SDKの使用
// クラスターIDを指定する場合は、AutoClusterは不要です。
job_desc['DAG']['Tasks']['my-task']['ClusterId'] = "cls-xxxxxxx"
2.2. Java SDKの使用
以下はコードスニペットです。
// クラスターIDを指定する場合は、AutoClusterは不要です。
desc.setClusterId("cls-xxxxxxx");
2.3. コマンドラインツールの使用
# クラスターIDを指定します
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. コマンドラインツールの使用
# AutoClusterを使用します
bcs sub "python main.py" -c img=img-ubuntu:type=ecs.sn1.medium
FAQ
AutoClusterとクラスターのどちらを使用するべきですか?
ジョブの送信時にクラスターIDを指定すると、ジョブは指定されたクラスターにディスパッチされて実行されます。
クラスターを指定しない場合は、AutoCluster構成を使用できます。この場合、イメージとインスタンスタイプを指定します。対応するクラスターは、タスクの実行開始時に自動的に作成され、タスクの完了後に自動的に解放されます。
いつクラスターを使用しますか?
実行するジョブの数が多い場合は、クラスターを使用します。
たとえば、100個のジョブがある場合は、10個のVMを持つクラスターを作成し、すべてのジョブをそのクラスターに送信します。システムはタスクを1つずつ自動的に実行するため、すべてのタスクが完了するまで待つだけで済みます。すべてのタスクが完了したら、クラスターを手動で解放(削除)します。この方法により、時間とコストを節約できます。
いつAutoClusterを使用しますか?
AutoClusterを使用するには、ジョブの送信時にインスタンスの数とインスタンスの容量を指定します。システムは、ジョブのタスクの実行時にクラスターを自動的に作成し、すべてのタスクの完了後にクラスターを解放します。
待ち時間が長くても問題ない場合、またはジョブの数が少ない場合は、AutoClusterを使用できます。