Azkaban を使ってジョブの管理・実行をしてみた ~ジョブ実行編~

こんにちは、サイオステクノロジーの稲垣です。

前回は、Azkaban のインストールから起動までを行いました。

今回は第二弾として、実際に Azkaban の機能を使用してジョブを実行したりしていきたいと思います。

プロジェクトの作成

ジョブを作成する前に、Azkaban ではプロジェクトを作成する必要があります。
プロジェクトを作成し、作成したプロジェクトにジョブを登録していくようなイメージだと考えてください。

では、ログイン後の画面の右上にある「Create Project」を押し、プロジェクト作成を行います。

after_login

プロジェクト名とプロジェクトに関する説明を入力する必要があるので、適宜入力してください。
入力が完了したら「Create Project」を押し、プロジェクトの作成は完了です。

test

ジョブファイルの作成

Azkaban では、.job 拡張子のファイルをジョブファイルとして扱うので、.job ファイルを作成します。
今回ご案内する手順では、作成したジョブファイルは Web 管理画面を通じてアップロードするので、Azkaban が動作しているサーバ上ではなく Web 管理画面を操作するクライアント上で作成するほうがスムーズに行くと思います。

記述内容としては、以下のような感じです。

複数のジョブに依存関係を持たせたい場合には、ジョブファイル内に dependencies パラメータを指定します。ジョブ同士で依存関係を持つと、ジョブ A の実行に成功した場合にジョブ B を実行するというようにできます。

ここでは、先程作成した test.job ファイルと依存関係を持つ test2.job ファイルを作成します。

ジョブファイルを作成したら、それらのファイルを zip で圧縮します。

圧縮した zip ファイルを用意できたら、プロジェクトの作成にて作成したプロジェクトを開き、「Upload」を押して作成した zip ファイルをアップロードします。

upload

ジョブの実行

先程までの流れでジョブの登録までは完了したので、続いては実際に登録したジョブを実行していきたいと思います。

ジョブを登録したプロジェクトを開き、「Execute Flow」を押します。

execute_flow

すると、Execute Flow ポップアップが表示されます。
ここでは、ジョブ実行に関するいくつかのオプションを設定することができます。

flow_view1

Flow View ジョブのフロー図を表示します。
図のジョブ上で右クリックを押すことで、当該ジョブを有効にするか無効にするか選ぶことなどができます。
Notification ジョブが成功・失敗した場合に E メールで通知する場合は、ここで設定を行います。
失敗の場合は、最初の失敗時もしくはフロー終了時のどちらかのタイミングで通知するよう設定できます。
Failure Options 失敗時のオプションを以下の 3 種類から設定できます。

  • Finish Current Running
    現在実行中のジョブを終了し、それ以降新しいジョブは実行されません。

  • Cancel All
    実行しているジョブが強制終了され、フローは失敗します。

  • Finish All Possible
    依存関係があるジョブに問題がない限り、実行可能なジョブを実行し続けます。
Concurrent フローが既に実行されている場合の実行オプションを指定します。

  • Skip Execution
    既に実行されている場合は、実行せずにスキップします。

  • Run Concurrently
    並列に実行します。その際、前回の実行の影響は受けません。

  • Pipeline
    フローをパイプライン化して現在の実行がオーバーランしないようにします。
Flow Parameters 各ジョブのグローバルパラメータを上書きするために使用される、一時的なフローパラメータを追加します。

設定が完了したら、右下の「Execute」を押してジョブを実行します。
ジョブの実行に成功すると、下記画像のように SUCCEEDED と表示され、ジョブのアイコンも緑になります。

success

この画面では画像のようなグラフの他に、それぞれのジョブの実行時間や実行タイミング、ログなどが確認できます。

実際に、Azkaban を実行しているサーバの /tmp 以下に success ファイルが存在するか確認してみます。

ちゃんと作成されていましたね。

以上でジョブ実行については終わりです。
次回は、ジョブをスケジューリングして自動実行するような機能をご紹介したりしていこうかなと思います。

それでは。

関連記事

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*