Azure Batch で実行されているタスクでは、実行時に出力データが生成される場合があります。 多くの場合、タスク出力データは、ジョブ内の他のタスク、ジョブを実行したクライアント アプリケーション、またはその両方で取得するために格納する必要があります。 タスクは Batch コンピューティング ノードのファイル システムに出力データを書き込みますが、ノードが再イメージ化されたとき、またはノードがプールを離れると、ノード上のすべてのデータが失われます。 また、タスクにはファイルの保持期間があり、その後、タスクによって作成されたファイルが削除されます。 このような理由から、後で必要になるタスク出力を Azure Storage などのデータ ストアに保持することが重要です。
Batch のストレージ アカウント オプションについては、「 Batch アカウントと Azure Storage アカウント」を参照してください。
タスク出力の一般的な例を次に示します。
- タスクが入力データを処理するときに作成されたファイル。
- タスクの実行に関連付けられているログ ファイル。
この記事では、出力データを保持するためのさまざまなオプションについて説明します。 Batch のタスクやジョブの出力データを Azure Storage やその他のストアに保持できます。
出力を永続化するためのオプション
出力データを保持する方法は複数あります。 シナリオに最適な方法を選択します。
- Batch サービス API を使用します。
- .NET 用の Batch ファイル規則ライブラリを使用します。
- C# および .NET アプリケーション用の Batch ファイル規則ライブラリを使用します。
- .NET 以外の言語には、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 に保持する」を参照してください。
バッチファイルの慣例標準
.NET 以外の言語を使用している場合は、独自のアプリケーションで Batch ファイル規則標準 を実装できます。 この方法は、次の場合に使用します。
- あなたは一般的な名前付けスキームを使用したいと思っています。
- Azure portalでタスクの出力を確認したいです。
カスタム ファイル移動ソリューション
独自の完全なファイル移動ソリューションを実装することもできます。 この方法は、次の場合に使用します。
- タスク データを 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 クライアント アプリケーション ( Azure Storage Explorer など) を使用します。 出力ファイルの場所をメモし、その場所に直接移動します。