設定ファイルを使用して複数のタスクとその依存関係を指定し、次のコマンドを実行してファイルを提出できます。
bcs sub --file job.cfg # ファイル名は編集可能です。単一タスクのサポート
job.cfgファイルは次のとおりです。
[taskname]
cmd=python test.py
job_name=demo
cluster=img=img-ubuntu:type=ecs.sn1.medium
description=test job
nodes=1
pack=./src/
read_mount=oss://bucket/input/:/home/input/
write_mount=oss://bucket/output/:/home/output/この設定ファイルには、[taskname]セクションが含まれています。セクション名tasknameは、タスクの名前として送信されます。
cmdとjob_nameを除き、他のオプションはbcs sub -hコマンドで表示される完全名を使用します。これは、
--${option}コマンドの結果と同じです。
複数タスクのサポート
設定ファイルで複数のタスクとその依存関係を設定することもできます。
job.cfgファイルは次のとおりです。
[DEFAULT]
job_name=log-count
description=demo
force=True
deps=split->count;count->merge
# 以下の設定はタスク全体で共通の設定です
env=public_key:value,key2:value2
read_mount=oss://bucket/input/:/home/input/
write_mount=oss://bucket/output/:/home/output/
pack=./src/
[split]
cmd=python split.py
cluster=img=img-ubuntu:type=ecs.sn1.medium
nodes=1
[count]
cmd=python count.py
cluster=img=img-ubuntu:type=ecs.sn1.medium
nodes=3
[merge]
cmd=python merge.py
cluster=img=img-ubuntu:type=ecs.sn1.medium
nodes=1[DEFAULT]セクションはジョブの設定を指定し、他のセクションはタスクの設定を指定します。セクションの名前はタスク名でもあります。
オプションの優先順位:コマンドラインの
--${option}が最も優先度が高く、次にタスクセクションで指定されたオプション、次にDEFAULTセクションのオプションが続きます。env、read_mount、write_mount、およびmountオプションはマージできます。その他のオプションは、優先度の高いオプションによって直接上書きされます。
deps=split->count;count->mergeは、タスク間の依存関係を指定します。splitタスクの後にcountタスクが続き、その後にmergeタスクが続きます。clusterオプションのimgパラメーターとtypeパラメーターは、リージョンによって異なります。選択したリージョンに基づいてこれらのパラメーターを設定する必要があります。
1. depsについて
DAGが次のとおりである場合:

depsを次のように設定します。
deps=split->count1,count2;count1->merge;count2->merge各依存関係は1対多のマッチングです。task1はtask2とtask3にマッチします。
タスクはコンマで区切り、依存関係はセミコロンで区切ります。
2. packについて
./src/
|-- split.py
|-- ...packでディレクトリが指定されている場合(例:pack=./src/)、src内のすべてのファイルがworker.tar.gzに圧縮されます。./src/ディレクトリを含むファイル名は、cmdで指定する必要があります(例:cmd=python split.py)。
packでファイルが指定されている場合(例:pack=./src/split.py)、そのファイルのみがworker.tar.gzに圧縮されます。ファイル名のみがcmdで指定されます(例:cmd=python split.py)。
packオプションは、[DEFAULT]セクション、各タスクセクション、またはコマンドラインで設定できます。
3. mountについて
read_mountは、アプリケーションが実行されるVMのファイルシステムにマウントする1つ以上の読み取り専用OSSディレクトリを指定します。Linuxオペレーティングシステムでは、OSSディレクトリをディレクトリとしてマウントできます。Windowsオペレーティングシステムでは、ディレクトリをドライブ(例:「E:」)としてマウントする必要があります。
複数のディレクトリをマウントするには、コンマで区切ります。例:read_mount=oss://bucket/input/:/home/input/,oss://bucket/input2/:/home/input2/。このルールは、write_mountとmountにも適用されます。
write_mountは、アプリケーションが実行されるVMのディレクトリにマウントする書き込み可能なOSSディレクトリを1つだけ指定します。ディレクトリが存在しない場合は、作成できます。このディレクトリに書き込まれたすべてのファイルは、マウントされたOSSディレクトリにアップロードされます。
mountは、read_mountとwrite_mountに同じディレクトリを指定します。このパラメーターは推奨されません。
4. clusterについて
clusterは、次の2つの形式で定義できます。
AutoCluster:
cluster=img=<img-id>:type=<instance-type>AutoClusterタスクは、指定されたタスクの実行中に、指定された設定でクラスターを自動的に作成します。タスクが完了すると、クラスターは自動的に解放されます。
Cluster:
cluster=<cluster-id>「bcs c」を実行して、クラスターを表示します。クラスターが存在しない場合は、作成します。
例:
bcs cc <cluster-name> -i <img-id> -t <instance-type> -n 3「-n 3」は、3つのVMでアプリケーションが実行されることを示します。
「-i img-id」はイメージIDを指定します。
「-t instance-type」はインスタンスタイプを指定します。
bcs itを実行して、使用可能なインスタンスタイプを表示できます。その他のオプションについては、
bcs cc -hを実行して説明を表示できます。
クラスターを使用すると、ジョブの起動時間が大幅に短縮されます。ただし、クラスターは実行され続け、課金されます。クラスターの使用とコストのバランスを維持する必要があります。
5. Dockerについて
構文:
docker=myubuntu@oss://bucket/dockers/Dockerは、DockerをサポートするImageIdが指定されている場合にのみ機能します。クラスターが指定されていない場合、デフォルトのimageIdはDockerをサポートします。または、DockerをサポートするImageIdを持つクラスターまたはclusterIdを明示的に指定することもできます。
myubuntuの完全名はlocalhost:5000/myubuntuです。Dockerイメージには、ここでは省略されているlocalhost:5000/というプレフィックスを付ける必要があります。OSSディレクトリは、OSSインスタンス上のプライベートDockerイメージウェアハウスのディレクトリです。詳細については、Dockerの使用方法を参照してください。
6. nodesについて
nodesは、タスクの実行に使用されるVMの数を示します。
7. forceについて
forceがTrueの場合、VMでアプリケーションを実行できない場合でも、ジョブは実行され続けます。forceがFalseの場合、VMでアプリケーションを実行できないと、ジョブは失敗します。デフォルト値:False