ジョブとタスク出力を保持する

Azure Batch で実行するタスクによって、実行時に出力データが生成されることがあります。 タスクの出力データは、多くの場合、ジョブ内の他のタスク、またはそのジョブを実行したクライアント アプリケーション (あるいは両方) が取得できるように格納される必要があります。 タスクは Batch コンピューティング ノードのファイル システムに出力データを書き込みますが、再イメージ化されるとき、またはノードがプールを終了するときに、ノードのすべてのデータが失われます。 タスクには、ファイル リテンション期間が設定されている場合もあります。この期間が過ぎると、タスクによって作成されたファイルが削除されます。 これらの理由から、後で必要になるタスク出力をデータ ストア (Azure Storage など) に永続化することが重要です。

Batch のストレージ アカウント オプションについては、「Batch アカウントと Azure Storage アカウント」を参照してください。

一般的なタスク出力の例には次のものがあります。

  • タスクによって入力データが処理されて作成されるファイル。
  • タスクの実行に関連したログ ファイル。

この記事では、出力データを保持するためのさまざまなオプションについて説明します。 Batch のタスクとジョブからの出力データを Azure Storage または他のストアに保持することができます。

出力を保持する際のオプション

出力データを保持する方法は複数あります。 シナリオに最適な方法を選択してください。

Batch サービス API

Batch サービス API を使用して出力データを保持することができます。 タスクをジョブに追加する時点、またはタスクのコレクションをジョブに追加する時点で、タスク データ用に Azure Storage 内に出力ファイルを指定します。

詳細については、「Persist task data to Azure Storage with the Batch service API (Batch サービス API を使用した Azure Storage へのタスクのデータの保持)」を参照してください。

Batch ファイル規則ライブラリ

Batch ファイル規則標準は、Azure Storage 内でのタスク出力ファイルの名前付けについての任意選択の規則セットです。 この標準は、ジョブとタスクの名前に基づいて、ファイルの宛先コンテナーと BLOB パスの名前付け規則を提供します。

出力データ ファイルの名前付けに、ファイル規則標準を使用することもできます。 代わりに、宛先コンテナーと BLOB パスに名前をつけることを選択できます。 ファイル規則の標準を使用する場合は、Azure portal で出力ファイルを表示できます。

C# と .NET を使用して Batch ソリューションを構築する場合は、.NET 用 Batch ファイル規則ライブラリを使用できます。 このライブラリは、出力ファイルを Azure Storageに移動し、Batch ファイル規則の標準に従って宛先コンテナーと BLOB に名前を付けます。

詳細については、「.NET 用の Batch ファイル規則ライブラリを使用した Azure Storage へのジョブおよびタスクのデータの保持」を参照してください。

Batch ファイル規則の標準

.NET 以外の言語を使用している場合は、開発者が自分のアプリケーション内で Batch ファイル規則の標準を実装することができます。 このアプローチは、次のような場合に使用します。

  • 一般的な名前付けスキームを使用したい場合。
  • Azure ポータルでタスク出力を表示したい場合。

カスタムのファイル移動ソリューション

ファイルの移動ソリューション全体を、開発者が自分で実装することもできます。 このアプローチは、次のような場合に使用します。

  • Azure Storage 以外のデータ ストアにタスクのデータを保持する必要がある。 たとえば、Azure SQL や Azure DataLake のようなデータ ストアにファイルをアップロードしたい場合があります。 その場所にアップロードするためのカスタム スクリプトまたは実行可能ファイルを作成します。 次に、プライマリ実行可能ファイルを実行した後に、コマンド ラインでカスタム スクリプトまたは実行可能ファイルを呼び出します。 たとえば、Windows ノードで doMyWork.exe && uploadMyFilesToSql.exe を呼び出します。
  • 最初の結果のチェックポイント処理または早期アップロードを行う必要がある。
  • エラー処理を詳細に制御する必要がある。 たとえば、特定のタスク終了コードに基づいて、タスクの依存関係アクションを使用して、特定のアップロード アクションを実行したい場合があります。

設計上の考慮事項

Batch ソリューションを設計する場合は、次の要素を考慮してください。

コンピューティング ノードは、多くの場合、特に自動スケールが有効になっている Batch プールでは一時的なものです。 次の場合、タスクからの出力のみを表示できます。

  • タスクが実行されているノードが存在している間。
  • タスクに設定したファイル保有期間中。

Azure portal で Batch タスクを表示し、[ノード上のファイル] を選択すると、出力ファイルだけではなく、そのタスクのすべてのファイルが表示されます。 タスクの出力をプール内のコンピューティング ノードから直接取得するには、ファイル名とノード上の出力場所が必要です。

タスク出力データを長く保持する場合は、出力ファイルをデータ ストアにアップロードするためのタスクを構成します。 データ ストアとして Azure Storage を使用することをお勧めします。 Batch サービス API でタスク出力データを Azure Storage に書き込むための統合があります。 他の永続的ストレージ オプションを使用して、データを保持できます。 ただし、他のストレージ オプション用のアプリケーション ロジックを自分で記述する必要があります。

Azure Storage で出力データを表示するには、Azure portal を使用するか、Azure Storage Explorer などの Azure Storage クライアント アプリケーションを使用します。 出力ファイルの場所をメモし、その場所に直接移動します。

次のステップ