Azkabanについて書いてみる

どうも、こんにちは、Azkabanユーザのwyukawaです。
Azkabanはジョブ管理ツールです。Hadoopとセットで語られることが多いと思いますが、別にHadoop使ってなくても使えます。
Azkabanは1と2があって別物なのですが、両方を触ったことがあります。

Azkaban1だと以下の制限がありましたが、Azkaban2だとそれはありません。

  • 認証機能がない
  • ジョブの削除がWebからできない。
  • JP1用語でいうジョブネット単位で依存関係を定義できない。ジョブ単位での依存関係の定義はできますが、ジョブを複数-まとめたジョブネット単位での依存関係が定義できない。
  • パラメータを指定してジョブ実行ができない。
  • 月次処理ができない

なのでAzkaban2は間違いなく進化しています。さらにAPIも提供しているのでコマンドからプロジェクトを作ったりジョブを実行したりすることもできます。

一方で微妙な点もいつくつかあります。

まず第一に最新版を使いたい場合は自前でソースビルドする必要があります。

http://azkaban.github.io/downloads.html
には2.5しか無いですが、github上では2.6の開発が進んでいて、現状だと2.6.4というタグがあります。
なので2.6.4を使いたい場合はこれを取ってきてビルドする必要があります。

第二にAPIのドキュメントに欠けている部分があります。例えばスケジューリングもAPIで操作出来るのですが、
http://azkaban.github.io/azkaban/docs/2.5/#ajax-api
を見てもそんな記述はどこにもありません。

第三にジョブ失敗時の挙動についてです。

Azkabanはジョブ失敗時の挙動が3パターンあります。

  • Finish Current Running finishes only the currently running job. It will not start any new jobs.
  • Cancel All immediately kills all jobs and fails the flow.
  • Finish All Possible will keep executing jobs as long as its dependencies are met.

デフォルトがFinish Current Runningです。つまりジョブが失敗した場合、依存関係に無い後続ジョブが実行されません。これは困ります。再実行するのが面倒だから。

以前のAzkaban 1だったら依存関係に無いジョブは実行してくれていました。
つまりFinish All Possible相当で他の挙動は無かったです。

じゃあFinish All Possibleに設定変更すれば良いじゃんという話になりますが、手動で実行する場合はこの設定を変更出来る画面があるのですが、スケジュール実行時に変更する方法が無いようでした。

なのでしょうがなくAPI経由で僕は変更しています。


2017/02/21追記
普通にブラウザからFinish All Possibleに変更できるっぽかった。。。


最後は、開発があまり活発じゃないこと。コミットはあるのですが、Prestoと比べると全然違います。ユーザとしてはもっと発展していって欲しいと思ってます。別に悪いツールじゃないし、むしろ結構良いツールだと思ってるので。

まあ、そんな感じです。もしAzkaban勉強会とかあれば参加したいです。