👌

Azure Batchについて調査してみた

2023/03/29に公開

はじめに

来期からAzure Batchに触れることが増えそうなので、技術調査をしました。  
Azure Batchは、大規模な並列処理や高性能計算(HPC)のバッチジョブをAzureで効率的に実行するためのサービスです。Azure Batchは、コンピューティングノード(仮想マシン)のプールを作成・管理し、実行したいアプリケーションをインストールし、ノード上でジョブをスケジュールします。クラスターやジョブスケジューラーのソフトウェアをインストール・管理・スケールする必要はありません。代わりに、Batch APIやツール、コマンドラインスクリプト、Azureポータルを使って、ジョブを設定・管理・モニタリングできます。

https://learn.microsoft.com/ja-jp/azure/batch/batch-technical-overview
  
開発者は、Batchをプラットフォームサービスとして使って、大規模な実行が必要なSaaSアプリケーションやクライアントアプリを構築できます。例えば、金融サービス会社のためにモンテカルロ法によるリスクシミュレーションを実行するサービスや、多数の画像を処理するサービスをBatchで構築できます。Batchを使うために追加料金はかかりません。仮想マシンやストレージ、ネットワークなど、消費した基盤リソース分だけ支払うことになります。AzureでのHPCソリューションのオプションとBatchとの比較については、Azure でのハイ パフォーマンス コンピューティング (HPC) を参照してください。

https://learn.microsoft.com/ja-jp/azure/architecture/topics/high-performance-computing

メリット

Azure Batchのメリットとしては、以下のような点が挙げられます。

  • 本質的に並列(embarrassingly parallel)なワークロードに適しています。これらのワークロードでは、アプリケーションが独立して実行でき、それぞれが一部分の作業を完了します。アプリケーションが実行される際には、共通のデータにアクセスすることがあっても、他のアプリケーションのインスタンスと通信することはありません。本質的に並列なワークロードは、同時にアプリケーションを実行できるコンピューティングリソースの量によって大規模化できます。
  • 密接に結合したワークロードも実行できます。これらのワークロードでは、実行するアプリケーションが互いに通信する必要があります。密接に結合したアプリケーションは通常、Message Passing Interface (MPI) APIを使用します。

https://learn.microsoft.com/ja-jp/azure/batch/quick-run-dotnet

デメリット

Azure Batchは、多くのメリットがありますが、一方で、以下のようなデメリットも考慮する必要があります。

  • ユーザーインターフェースが分かりにくい場合があります。AzureポータルやBatch Explorerなどのツールを使っても、プールやジョブ、タスクの設定や管理には慣れが必要です。また、Batch APIやコマンドラインスクリプトを使う場合は、さらに学習コストがかかります。
  • データの準備や処理が煩雑な場合があります。Batchでは、アプリケーションや入力データをストレージアカウントにアップロードしたり、出力データをダウンロードしたりする必要があります。また、タスクの実行前後にデータを変換したり、圧縮したり、暗号化したりする必要がある場合もあります。
  • バッチ処理に適さないワークロードがある場合があります。Batchは、本質的に並列なワークロードや密接に結合したワークロードに適していますが、それ以外のワークロードには適していない場合があります。例えば、リアルタイム性やインタラクティブ性が求められるワークロードや、複雑な依存関係や制約条件を持つワークロードは、Batchでは効率的に実行できない可能性があります。

https://learn.microsoft.com/ja-jp/azure/batch/quick-create-portal

Azure Batchの使い方

  • AzureポータルでBatchアカウントを作成します。Batchアカウントは、プールやジョブを作成するために必要です。また、Batchアカウントとストレージアカウントを関連付けることもできます。ストレージアカウントは、このクイックスタートでは必要ありませんが、実際のワークロードでは、アプリケーションをデプロイしたり、入力・出力データを保存したりするために便利です。
  • Batchアカウントができたら、コンピューティングノード(仮想マシン)のプールを作成します。このクイックスタートでは、AzureマーケットプレイスからWindows Server 2019のイメージを使って、2つのノードからなるプールを作成します²。Batchはプールをすぐに作成しますが、コンピューティングノードを割り当てて起動するまでに数分かかります。
  • プールが作成されたら、ジョブを作成します。ジョブは、プール上で実行するタスクの集合です²。このクイックスタートでは、ジョブにはサンプルタスクが含まれています。サンプルタスクは、ノード上でコマンドラインを実行し、テキストファイルを出力します。
  • ジョブが完了したら、タスクの出力ファイルをダウンロードします。出力ファイルは、ノード上の一時的なストレージに保存されています。このクイックスタートでは、.NET APIを使って出力ファイルをダウンロードします。

https://learn.microsoft.com/ja-jp/azure/batch/quick-run-dotnet

以上がAzure Batchの基本的な使い方です。Azure Batchでは、さまざまなオプションや機能を使って、より複雑なワークロードや大規模なスケールに対応できます。Azure Batchの詳細については、Azure Batch のドキュメント を参照してください。

https://learn.microsoft.com/ja-jp/azure/batch/

参考

https://learn.microsoft.com/ja-jp/azure/architecture/data-guide/big-data/batch-processing

https://azure.microsoft.com/ja-jp/solutions/high-performance-computing/#intro

GitHubで編集を提案

Discussion