すべてのプロダクト
Search
ドキュメントセンター

:createJob

最終更新日:Dec 28, 2024

メソッドの説明

ジョブを作成して送信します。

パラメータの説明

パラメータ

タイプ

必須

説明

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;
    }
}