メソッドの説明
ジョブを作成して送信します。
パラメータの説明
パラメータ | タイプ | 必須 | 説明 |
jobDescription | JobDescription | はい | ジョブ内の各タスクの説明と、タスク間のDAG依存関係。 |
注: 次のJobDescription、TaskDag、TaskDescription、およびResourceDescriptionのパッケージ名はすべてcom.aliyuncs.batchcompute.pojo.v20151111です。
JobDescriptionの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 |
name | String | はい | ジョブの名前。 |
priority | int | はい | 優先度は0から1000までの整数で指定します。値が大きいほど優先度は高くなります。 |
description | String | いいえ | ジョブの簡単な説明。 |
dag | DAG | いいえ | typeがDAGの場合に必須です。ジョブ内の各タスクと、タスク間のDAG依存関係を記述します。 |
app | AppJobDescription | いいえ | typeがAppの場合に必須です。アプリの構成パラメータ、入力、および出力を記述します。 |
jobFailOnInstanceFail | Boolean | はい | インスタンスが失敗した場合にジョブを失敗させるかどうかを指定します。一般的に、値はtrueです。 |
autoRelease | Boolean | いいえ | ジョブが正常に実行された後に、システムがジョブを自動的に解放(削除)するかどうかを指定します。デフォルト値: false。 |
type | String | はい | ジョブのタイプ。現在、タスクは有向非巡回グラフ(DAG)の形式でのみ記述できます。値: DAGおよびApp。 |
notification | Notification | いいえ | 通知設定。MNSのトピックまたはジョブ関連イベントを設定できます。 |
DAGの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 |
tasks | Map | はい | すべてのタスク名とタスクの説明のマッピング。 |
dependencies | Map | いいえ | タスク間の依存関係。これも1対多の関係を記述するマップであり、「キー」はソースタスク名、「値」はターゲットタスク名を示します。詳細については、例を参照してください。 |
TaskDescriptionの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須かどうか | 説明 |
taskName | String | はい | タスクの名前。 |
clusterId | String | いいえ | クラスタのID。clusterIdとAutoClusterのいずれか1つのみを選択できます。 |
autoCluster | AutoCluster | いいえ | autoClusterとclusterIdのいずれか1つのみを選択できます。 |
parameters | Parameters | はい | プログラムの実行に関連する構成。 |
inputMapping | Map | いいえ | OSSパスとローカルマウント位置のマッピング。すべてのマウント位置はスラッシュ(/)で終わる必要があります。同じバケットまたは異なるバケットに配置できますが、同じユーザーに属している必要があります。マウント位置は、Windowsオペレーティングシステムではドライブ文字、Linuxオペレーティングシステムではフォルダです。「キー」はOSSパス、「値」はマウントパスを示します(例:「D:」または「/home/admin/dist1」)。 |
outMapping | Map | いいえ | ローカルパスからOSSパスへのマッピング。「キー」はローカルパス、「値」はOSSパスを示します。 |
logMapping | Map | いいえ | ログパスからOSSパスへのマッピング。「キー」はローカルパス、「値」はOSSパスを示します。 |
instanceCount | int | はい | タスク内のインスタンス数。正の整数です。 |
timeout | int | はい | タスク内のインスタンスの最大実行時間(タイムアウト)。値の範囲は1から86400です。単位は秒です。 |
mounts | Mounts | いいえ | Mountsによって記述されるインスタンスのネットワークマウント構成。現在、NASマウントとOSSマウントがサポートされています。 |
maxRetryCount | int | いいえ | 最大再試行回数。デフォルト値: 0 |
writeSupport | Boolean | いいえ | inputMappingの読み取り専用マウントディレクトリへの書き込みサポート。マウントされたファイルは読み取り専用であり、上書きできないことに注意してください。 |
AutoClusterの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 |
ECSImageId | String | はい | ECSイメージIDまたは登録済みイメージIDを指定できます。 |
instanceType | String | はい | インスタンスタイプ。サポートされているインスタンスタイプはリージョンによって異なります。 |
resourceType | String | はい | リソースのタイプ。現在、このパラメータはOnDemandのみに設定できます。これがデフォルト値です。 |
SpotStrategy | String | はい | インスタンスのスポット戦略。ResourceTypeがSpotの場合にのみ有効になります。値: SpotWithPriceLimit (スポットインスタンスの最大価格を設定) および SpotAsPriceGo (システムが価格を自動的に提供し、最大値は従量課金制価格)。 |
SpotPriceLimit | Float | いいえ | 1時間あたりのインスタンスの最大価格。値には最大で3つの小数を含めることができます。SpotStrategyがSpotWithPriceLimitの場合に有効になります。 |
userData | Map | いいえ | ユーザーデータ |
configs | Configs | いいえ | クラスタ構成(インスタンスのディスク構成など)。[Configs]で説明されています。 |
ReserveOnFail | Bool | いいえ | タスクが失敗した場合、関連するVMは解放されず、ユーザーがジョブを削除するまでこれらのリソースの料金が課金され続けます。デフォルト値はFalseです。調査でのみ使用されます。 |
Parametersの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 |
command | Command | はい | ユーザー・プログラムに関連するコマンドライン・パラメータ。 |
inputMappingConfig | InputMappingConfig | いいえ | NFSマウントサービスの構成。 |
stdoutRedirectPath | String | はい | 標準出力がリダイレクトされるOSSディレクトリ。 |
stderrRedirectPath | String | はい | 標準エラーがリダイレクトされるOSSディレクトリ。 |
Commandの属性 (getterメソッドとsetterメソッドはすべての属性で使用できます)
属性 | タイプ | 必須 | 説明 |
commandLine | String | はい | ユーザー・プログラムを実行するためのコマンドを指定します。 |
PackagePath | String | はい | ユーザー・プログラムが配置されているOSSパス。 |
EnvVars | Map | いいえ | ユーザー・プログラムの実行開始時に構成される環境変数。 |
InputMappingConfigの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 |
lock | Boolean | いいえ | NFSマウントサービスがネットワークファイルロックをサポートするかどうかを指定します。trueに設定すると、ネットワークファイルロックが有効になり、ファイルロックのバックエンドサポートが提供されます。falseに設定すると、ネットワークファイルロックが無効になり、ファイルアクセス パフォーマンスが向上します。ファイルロックはNFSクライアントでのみサポートされ、サーバーに同期されません。一部のオペレーティングシステムでは、表示されるファイルロックメソッドが失敗する可能性があります。 |
locale | String | いいえ | OSS上のすべてのオブジェクトはUTF-8を使用して名前が付けられます。このパラメータは、マウント後に使用されるローカル文字セットを決定します。オプションの値には、GBK、GB2312-80、BIG5、ANSI、EUC-JP、EUC-TW、EUC-KR、SHIFT-JIS、およびKSC5601が含まれます。 |
Notificationの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 |
topic | Topic | いいえ | メッセー ジトピック |
Topicの属性
getterメソッドとsetterメソッドはすべての属性で使用できます。
属性 | タイプ | 必須 | 説明 | |
endpoint | String | はい | MNSリージョンのエンドポイント。形式はhttp://${your_user_id}.mns.${region}-internal.aliyuncs.com/です。可能な限りイントラネットエンドポイントを使用してください。 | |
name | String | はい | トピックの名前 | |
events |
| はい | イベントのリスト。ジョブ関連のイベントを入力する必要があります。 |
AppJobDescriptionの属性
属性 | タイプ | 必須 | 説明 |
appName | String | はい | アプリ名。有効な文字セットは[a-zA-Z0-9_-:]です。長さは1024文字を超えることはできません。アプリ名には2つの形式があり、それぞれパブリックアプリとプライベートアプリにアクセスするために使用されます。たとえば、パブリックアプリ「App1」にアクセスするには、appNameをPublic:App1に設定します。「Public」は除外できます。つまり、アプリ名は「:App1」に変更されます。App1がプライベートアプリの場合は、appNameをApp1に直接設定します。 |
inputs | Map | はい | ジョブの入力パラメータ。「Map」は0から50の間の値である必要があります。「Key」はアプリのInputParametersで定義されたパラメータ名である必要があり、「Value」はアプリのパラメータのタイプと一致している必要があります。 |
outputs | Map | いいえ | ジョブの出力パラメータ。「Map」は0から50の間の値である必要があります。「Key」は、アプリのOutputParametersで定義され、LocalPathがnullでないパラメータ名である必要があり、「Value」はOSSパスである必要があります。デフォルト値:{}。 |
logging | AppJobDescription.Loggin | いいえ | ログ構成。 |
config | Map | いいえ | ジョブの実行構成。 |
AppJobDescription.Logginの属性
パラメータ | タイプ | 必須 | 説明 |
stdoutPath | String | いいえ | 標準出力がリダイレクトされるOSSディレクトリ。長さは1000文字を超えることはできません。デフォルト値: null |
stderrPath | String | いいえ | 標準エラーがリダイレクトされるOSSディレクトリ。長さは1000文字を超えることはできません。デフォルト値: null |
レスポンスの説明
作成に成功すると、CreateJobResponseインスタンスが返されます。response.getJobId()を使用して、作成されたジョブの名前を取得できます。
タイプ | 説明 |
CreateJobResponse | 作成されたジョブのIDを取得します。 |
CreateJobResponseパッケージ名はcom.aliyuncs.batchcompute.model.v20151111です。以下にリストされているその他のレスポンスはこのパッケージの下にあります。
作成に失敗した場合、ClientExceptionがスローされます。
DAGジョブを送信するためのサンプルコード
JobDescriptionの構造は複雑です。そのため、開発にはIntelliJ IDEA Communityを使用することをお勧めします。
package com.aliyuncs.batchcompute.sample.v20151111;
import com.aliyuncs.batchcompute.main.v20151111.*;
import com.aliyuncs.batchcompute.model.v20151111.*;
import com.aliyuncs.batchcompute.pojo.v20151111.*;
import com.aliyuncs.exceptions.ClientException;
public class CreateJob {
public static void main(String[] args) {
BatchCompute client = new BatchComputeClient("cn-shenzhen", "your_access_id", "your_access_secret");
try {
JobDescription jobDescription = getJobDesc();
CreateJobResponse response = client.createJob(jobDescription);
String jobId = response.getJobId();
// 作成に成功しました
System.out.println("ジョブIDを取得しました:" + jobId);
} catch (ClientException e) {
e.printStackTrace();
// 作成に失敗しました
}
}
private static JobDescription getJobDesc() {
JobDescription desc = new JobDescription();
desc.setName("testJob");
desc.setPriority(1);
desc.setDescription("デモ");
desc.setType("DAG");
desc.setJobFailOnInstanceFail(true);
desc.setAutoRelease(false);
DAG dag = new DAG();
dag.addTask(getTaskDesc());
desc.setDag(dag);
Notification noti = new Notification();
Topic topic = new Topic();
topic.addEvent(Topic.ON_JOB_FAILED);
topic.addEvent(Topic.ON_JOB_FINISHED);
noti.setTopic(topic);
topic.setName("tp_n1");
topic.setEndpoint("xxxxx");
desc.setNotification(noti);
return desc;
}
private static TaskDescription getTaskDesc() {
TaskDescription task = new TaskDescription();
task.setClusterId("cls-xxxxxx");
task.setInstanceCount(1);
task.setMaxRetryCount(2);
task.setTaskName("task_1");
task.setTimeout(10000);
Parameters parameters = new Parameters();
Command cmd = new Command();
cmd.setCommandLine("python main.py");
cmd.setPackagePath("oss://my-bucket/test/worker.tar.gz");
parameters.setCommand(cmd);
parameters.setStderrRedirectPath("oss://my-bucket/test/logs/");
parameters.setStdoutRedirectPath("oss://my-bucket/test/logs/");
InputMappingConfig input = new InputMappingConfig();
input.setLocale("GBK");
input.setLock(true);
parameters.setInputMappingConfig(input);
task.setParameters(parameters);
task.addInputMapping("oss://my-bucket/disk1/", "/home/admin/disk1/");
task.addOutputMapping("/home/admin/disk2/", "oss://my-bucket/disk2/");
return task;
}
}
Appジョブを送信するためのサンプルコード
package com.aliyuncs.batchcompute;
import com.aliyuncs.batchcompute.main.v20151111.BatchCompute;
import com.aliyuncs.batchcompute.main.v20151111.BatchComputeClient;
import com.aliyuncs.batchcompute.model.v20151111.CreateJobResponse;
import com.aliyuncs.batchcompute.pojo.v20151111.AppJobDescription;
import com.aliyuncs.batchcompute.pojo.v20151111.JobDescription;
import com.aliyuncs.exceptions.ClientException;
public class CreateAppJob {
public static void main(String[] args){
BatchCompute client = new BatchComputeClient("cn-shenzhen", "your_access_id", "your_access_secret");
try {
JobDescription jobDescription = getJobDesc();
CreateJobResponse response = client.createJob(jobDescription);
String jobId = response.getJobId();
// 作成に成功しました
System.out.println("ジョブIDを取得しました:" + jobId);
} catch (ClientException e) {
e.printStackTrace();
// 作成に失敗しました
}
}
private static JobDescription getJobDesc() {
JobDescription jobDesc = new JobDescription();
AppJobDescription app = new AppJobDescription();
app.setAppName("myApp");
app.addInputs("abc", "oss://bucket/inp");
app.addOutputs("out", "oss://bucket/out");
AppJobDescription.Logging logging = new AppJobDescription.Logging();
logging.setStderrPath("oss://bucket/key/logs");
logging.setStdoutPath("oss://bucket/key/logs");
app.setLogging(logging);
jobDesc.setName("java-sdk-test");
jobDesc.setDescription("Java SDKテストジョブ");
jobDesc.setType("App");
jobDesc.setApp(app);
return jobDesc;
}
}