3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Batch で Java アプリケーションを実行する

Last updated at Posted at 2020-09-21

はじめに

Azure Batch はオートスケール可能な仮想マシン (VM) 上で任意のスクリプトやアプリケーションを実行できる便利なサービスです。VM に JVM (Java Virtual Machine) がインストールされていれば Java アプリケーションも実行することができます。

公式ドキュメントでは .NET や Python アプリケーションについてのクイックスタートがありますが Java のドキュメントは現状無いため、本記事では、Azure Batch 上で Java アプリケーションを実行する流れを簡単にまとめたいと思います。

大筋は以下のクイックスタートの記事に沿っていますので、合わせてご覧ください。
Azure クイックスタート: Azure portal で最初の Batch ジョブを実行する - Azure Batch | Microsoft Docs

Batch 関連リソース作成

それでは順に Batch 関連のリソース (アカウント、プール、ジョブ、タスク) を作成していきます。各リソースの大まかな解説は以下の通りです。

  • アカウント : Azure Batch の最上位のリソースです。
  • プール : VM の集合であり、計算資源としての役割を持ちます。1 つのアカウントに複数のプールを作成することができます。
  • ジョブ : 計算の単位であるタスクの集合です。ジョブは 1 つまたは複数のプールに関連付けることができます。配下のタスク群は、ジョブに関連付けられたプールを計算資源として利用します。
  • タスク : 計算の単位です。アプリケーションの実行コマンドなどを定義します。

Batch アカウント作成

Azure ポータルの検索ボックスで [Batch] と入力すると [Batch アカウント] が候補に表示されますのでクリックします。
image.png

新しい Batch アカウントの画面では任意のリソースグループ名やアカウント名などを入力します。Batch アカウントにストレージアカウントを関連付けることができますので [ストレージ アカウントの選択] のリンクをクリックします。
image.png

既存のストレージアカウント、または新規作成を選ぶことができます。ここでは新規でストレージアカウントを作成します。特にこだわりが無ければ推奨されている StorageV2 (汎用 v2) を選択します。レプリケーションは要件に合わせて任意のレベルを設定ください (ここでは最もコストが安いローカル上長ストレージを選択しています)。
image.png

後の設定は任意です。問題なければ作成します。
image.png

プールの追加

Batch アカウントの左側メニュー [プール] にて [追加] をクリックします。
image.png

ここで VM (の集合) を作成するため、設定項目がかなり多いです。まずイメージですが、様々な種類を選ぶことができます。ここでは以下の内容を選択しています。

  • 発行者 : canonical
  • オファー : ubuntuserver
  • SKU : 18.04-lts

image.png

選択可能なイメージについては本記事末尾に表形式でまとめています。
APPENDIX - 選択可能なイメージの種類

選択可能な VM サイズは以下のドキュメントをご覧ください。
プールの VM サイズを選択する - Azure Batch | Microsoft Docs

ここでは VM サイズはデフォルトの [Standard A1] を選択しています。スケーリングは台数固定か自動スケールを選択できますが、ここでは [固定] とし、1 台の VM が起動するようにしています。
開始タスクにて VM が起動する際に実行するコマンドを定義できます。[有効] を選択します。
image.png

(開始タスク)
先に選択した Ubuntu 18.04-lts のイメージには JVM がインストールされていないため、開始タスクの [コマンドライン] に JVM のインストールコマンド apt install -y openjdk-11-jdk を定義します。合わせて [ユーザーID] を [プール autouser、管理者] に変更します。残りの設定は任意で、問題なければ [OK] をクリックします。
image.png

プールの追加では他にも仮想ネットワークなど色々な設定ができますが、ここでは最小限とし [OK] をクリックします。
image.png

これでプールの作成は完了です。専用ノードが 0 -> 1 になっていますが VM の起動中を意味します。これが 1 になったら VM の起動は完了です。もし 1 にならない場合はノードの起動に失敗しています。開始タスクが正しく設定されていない可能性などがあるため、ミスなどが無いか見直してみましょう。
image.png

ジョブの追加

Batch アカウントの左側メニュー [ジョブ] にて [追加] をクリックします。
image.png

任意のジョブ ID、関連付けるプールを選択し [OK] をクリックします。
image.png

モード & 詳細設定

モードと詳細設定でより細かい制御を行うことができますが、ここでは特に設定せずに参考としてキャプチャだけ載せておきます。
image.png
image.png

タスクの追加 (Java 動作確認)

Java が問題なくインストールされていることを確認するため、Java のバージョン確認のコマンドをタスクにて実行していきます。

先に作成したジョブをクリックします。
image.png

タスクの追加をクリックします。
image.png

任意 & ジョブ内で一意なタスク ID を入力、コマンドラインに java --version を入力し、[送信] をクリックします。
image.png

すると、タスクはジョブのキューに送信され、アクティブ → 実行中 → 完了という状態遷移をします。他のタスクが実行されていない状態のためあまり待たずにタスクの実行が完了するはずです。詳細を確認するため送信したタスクをクリックします。
image.png

正常にタスクが完了していれば、標準エラーへの出力結果「stderr.txt」や標準出力への出力結果「stdout.txt」などが表示されるはずです。stdout.txt をクリックします。
image.png

以下のように Java のバージョン情報が出力されていれば OK です。
これで Java アプリケーションを実行するための Batch 関連リソースの準備が整いました。
image.png

Java アプリケーションの実行

ここから本題の Java アプリケーションの実行に入ります。実行可能 JAR ファイルをストレージアカウントにアップロードし、その JAR ファイルを Batch のタスクでダウンロードして実行する流れになります。

実行可能 JAR ファイルの準備

適当な実行可能 JAR ファイルを準備します。ここでは以下の Spring Boot + Sprint Batch のサンプルアプリケーション作成の手順を進めることで生成できる実行可能 JAR ファイルを利用します。

JAR ファイルをストレージアカウントにアップロード

Batch アカウントに関連付けたストレージアカウントに適当な Blob コンテナーを作成して JAR ファイルをアップロードしておきます。
image.png

タスクの追加 (Java アプリケーション実行)

Batch アカウントのジョブからタスクの追加を行います。コマンドラインでは以下の JAR 実行のコマンドを入力します。JAR ファイルのダウンロード設定のため [リソースファイル] をクリックします。

java -jar batch-processing-0.0.1-SNAPSHOT.jar

image.png

リソースファイルの設定画面で [ストレージ BLOB の選択] をクリックします。
image.png

[SAS を含める] にチェック、[有効期限] は任意の値 (ここではデフォルトの 7) を入力し [OK] をクリックします。
image.png

アップロードした JAR ファイルを指定して [選択] をクリックします。
image.png

[送信] をクリックします。これにより、タスクで定義したコマンドラインを実行する前に、当該 JAR ファイルが VM の作業ディレクトリにダウンロードされます。
image.png

タスクの送信 & 実行完了後、以下のように状態が完了になっており、stdout.txt に標準出力結果が出力されていれば、処理は正常に完了しています。
image.png
image.png

本編は以上となります。

APPENDIX - 選択可能なイメージの種類

2020 年 9 月 20 日時点でイメージの種類 - Marketplace から選択可能な項目の一覧です。あくまで一時点のスナップショットですので、最新情報は Azure ポータルからご確認ください。

イメージの種類

  • Marketplace
  • Cloud Services (Windows のみ)
  • カスタム イメージ - 共有イメージギャラリー
  • グラフィックスとレンダリング

イメージの種類 - Marketplace

発行者 オファー SKU
canonical ubuntuserver 16.04-lts
canonical ubuntuserver 18.04-lts
credativ debian 8
credativ debian 9
debian debian-10 10
micrsoft-azure-batch centos-container 7-7
micrsoft-azure-batch centos-container-rdma 7-4
micrsoft-azure-batch centos-container-rdma 7-7
micrsoft-azure-batch ubuntu-server-container 16-04-lts
micrsoft-azure-batch ubuntu-server-container-rdma 16-04-lts
micrsoftwindowsserver windowsserver 2008-r2-sp1
micrsoftwindowsserver windowsserver 2008-r2-sp1-smalldisk
micrsoftwindowsserver windowsserver 2012-datacenter
micrsoftwindowsserver windowsserver 2012-datacenter-smalldisk
micrsoftwindowsserver windowsserver 2012-r2-datacenter
micrsoftwindowsserver windowsserver 2012-r2-datacenter-smalldisk
micrsoftwindowsserver windowsserver 2016-datacenter
micrsoftwindowsserver windowsserver 2016-datacenter-smalldisk
micrsoftwindowsserver windowsserver 2016-datacenter-with-containers
micrsoftwindowsserver windowsserver 2019-datacenter
micrsoftwindowsserver windowsserver 2019-datacenter-core
micrsoftwindowsserver windowsserver 2019-datacenter-core-smalldisk
micrsoftwindowsserver windowsserver 2019-datacenter-core-with-containers
micrsoftwindowsserver windowsserver 2019-datacenter-core-with-containers-smalldisk
micrsoftwindowsserver windowsserver 2019-datacenter-smalldisk
micrsoftwindowsserver windowsserver 2019-datacenter-with-containers
micrsoftwindowsserver windowsserver 2019-datacenter-with-containers-smalldisk

以上です。

3
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?