Azure Managed Service Column <Azure運用コラム>

Azure Batchとは?Azureで大規模なバッチ処理を高速化する方法を解説

Category: 入門編

2022.02.08

大規模かつ高負荷な科学技術計算をAzureで処理するには?効率的な方法を解説

バッチ処理というと、夜間バッチのように、1つの処理を長い時間をかけて実行するイメージがあるかもしれません。しかし、科学技術計算や複雑なデータ統合処理のように、大量データを扱う大規模なバッチ処理を並列化して短時間で実行することが求められる場合もあります。

Azureでは、そのような大規模な並列処理や、高負荷な処理のためにAzure Batchというサービスを提供しています。

本記事では、Azure Batchの概要や料金体系、Azure Batchがどのように複雑な並列バッチを処理しているかについて解説します。

1. Azure Batchとは

Azureで大規模・高負荷なバッチ処理をどのように処理していくのでしょうか。まず、Azure Batchとはどのようなものか、概要と料金体系について解説します。

1.1 Azure Batchの概要

Azure Batchとは、CPU・メモリなど多くのコンピュータリソースを必要とする大規模なバッチジョブを、Azure上で効率的に処理するための実行基盤です。Azure Batchを使用することで、下記のバッチジョブを効率的に実行することが可能になります。

  • 大規模な並列処理を行うバッチジョブ
  • 大量のマシンリソースを必要とする科学計算等の高負荷なバッチジョブ
    (ハイパフォーマンス・コンピューティング:HPC)

Azure Batchで管理された仮想マシン上で実行するようにスケジュールを設定し、バッチジョブの要件に合わせて仮想マシンを自動的にスケールさせながら大量のマシンリソースを要するバッチジョブを処理していきます。

1.2 Azure Batchの料金体系

Azure Batchは基本的に無料で利用可能です。ただし、仮想マシン、ストレージ、ネットワークなど、バッチジョブの実行に必要なリソースを使用した分は従量課金として請求される仕組み(※1)となっています。

※1 参考:Batchの価格

2. Azure Batchの構成と仕組み

Azure Batchでは、どのような仕組みで大規模なバッチジョブを効率的に実行・処理しているのでしょうか。ここでは、Azure Batchがバッチジョブを実行するための構成と仕組みについて解説します。

2.1 Azure Batchの構成

Azure Batch は下記の通りさまざまな要素で構成されています。それぞれの構成要素の関連性について解説します。

  • Batchアカウント
  • コンピューティングノード
  • プール
  • ジョブ
  • タスク

Batchアカウント

Batchアカウントとは、Azure Batchサービス内で一意に識別されるエンティティ(実体)です。

Azure Batchを利用する際は、最初にBatchアカウントを作成します。以降に解説する構成要素(ノード・プール・ジョブ・タスク)は全てBatchアカウントに含まれることになります。基本的に、Batchサービスで利用するファイルの入出力にはAzure Storageを使用するため、Batchアカウントは通常、対応するストレージアカウントに関連付けられることになります。

コンピューティングノード

コンピューティングノード(ノード)とは、Azure Batchによるバッチ実行の最小単位であるタスクを実行する仮想マシンを指します。バッチに必要なCPU、メモリ、ローカルディスクを見積もった上で、仮想マシンの数とサイズを選択し、OSの種別(WindowsまたはLinux)を選択します。

バッチジョブの負荷が上がる場合は自動でノードの数をスケールさせることができます。ノード上では、選択したOSがサポートしていればどのような実行可能ファイル・スクリプトでも実行することができます。

プール

プールとは、コンピューティングノードの集合(コレクション)であり、各ノードを制御する役割を担います。プールを作成することで、バッチジョブを実行するノードの割り当て、アプリケーションのインストール、データの分散、状態の監視、プール内のノードのスケーリングなどが可能となります。

ノードは直接作成することはできないので、プール作成時に、どのようなノードをいくつ作成するかなどを指定する必要があります。プールに追加されたノードには一意のホスト名とIPアドレスが割り当てられ、同じプールに属する他のノードと通信ができるようになります。

なお、プールは、プールを作成した Batch アカウントのみ使用することができ、複数のプールを作成することも可能です。

ジョブ

ジョブとは、Azure Batchの最小単位であるタスクの集合(コレクション)であり、プール内のノード上で行う処理をタスクでどのように実行するかを管理・制御する役割を担います。

ジョブによって、作業が実行されるプールが指定されます。 ジョブごとに新しくプールを作成でき、多数のジョブに対して1つのプールを使用することも可能です。バッチのスケーリングは、このジョブ単位で行われます。

また、ジョブスケジュールを使用することで、Batchサービス内に、繰り返し発生するジョブを作成することなども可能です。

タスク

タスクは、Azure Batchによるバッチ実行の最小単位で、ジョブに関連付けられた処理・計算を行う単位です。タスクはノードに割り当てられて実行完了するか、ノードが解放されるまでキューに格納されます。つまりノード上にある1つ以上のプログラムまたはスクリプトをタスクが実行することによって、必要な作業が遂行される形になります。

タスクには下記のような特徴的な機能があります。

  • 開始タスク
  • ジョブマネージャータスク

開始タスクは、プールに関連付けて使用する、最初に実行されるタスクです。タスク実行に必要なノードの動作環境の準備や、タスクが実行するアプリケーションのインストールや設定などを行います。開始時にタスクに必要な環境が全て準備されるため、簡単にノードをスケールすることができます。

ジョブマネージャータスクは、ジョブの実行制御や監視を行うタスクです。ジョブに対してタスクを作成・実行するタイミングや、ジョブの実行順序などを制御する役割を担います。

2.2 Azure Batchでジョブを作成する際の注意事項

Azure Batchでジョブを作成する際に注意するべき内容について解説します。

ジョブを少なくしてタスクを多くする

1つのジョブに対して少ないタスクを実行させるのは、オーバーヘッドがかかるため非効率です。そのため、なるべく多くのタスクを実行させる方が望ましいと言えます。例えば、10個のタスクを持つ100個のジョブよりも、1000個のタスクを持つ1つのジョブを実行する方が効率的に処理を実行できます。

ノード毎の最大タスク数を管理する

Azure Batchでは、オーバーサブスクライブという状態をサポートしています。オーバーサブスクライブにより、ノードの持つCPUコア数よりも多くのタスクを実行可能となりますが、パフォーマンスへの影響が出る場合があります。例えば、8コア搭載のノードに対して、10並列のタスクを実行すると、CPUの割り当て待ちなどが発生してジョブのパフォーマンス低下を引き起こす可能性があるため、ユーザー側でコア数を超える並列タスクを実行しないよう管理する必要があります。

4. まとめ

Azureはさまざまな用途で利用ができるクラウドです。科学技術計算や複雑なデータ統合処理のような複雑な計算を実行する基盤としても利用できます。このように、大量データを扱う大規模なバッチ処理を並列化して短時間で実行する場合は、Azure Batchのようなサービスを利用することで効率的に処理を実行することが可能です。

ただし、処理のパフォーマンスを出すためにはユーザー側での管理も必要となるため、ノウハウを持つプロフェッショナルの支援を受けながら導入することが大事です。

Azure設計・構築を任せたい

Azure構築サービス

Azure構築サービス

Microsoft Azureを利用したシステムの設計・構築を代行します。お客様のご要件を実現する構成をご提案・実装いたします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Azure導入支援・構築・運用サービス総合カタログ

    Microsoft Azure サービスの導入検討・PoC、設計、構築、運用までを一貫してご支援いたします。
    Azure導入・運用時のよくあるお悩み、お悩みを解決するためのアールワークスのご支援内容・方法、ご支援例などをご確認いただけます。

Azure導入個別相談会(無料)

Tag: Azure Batch Azureコンピューティング

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php