memo: Azkaban #wfemeetup
- ジョブ管理ツール
- Hadoopのジョブ依存関係を解決するために作られた
- あんまりモダンじゃないJavaで実装されていること
- WebServerがGUIを提供
- ExecuterServerでジョブを実行
- 基本的なことはできるが、高度なことはできない
- 依存関係を貼る
- 実行時間のチェック
- スケジューリング
- 失敗通知
- リトライ
- ファイルができたら実行みたいなのはできない
- 通知はメールだけ
- バイナリがないのでソースをビルドする必要がある
- 開発もあんまりアクティブじゃない
メーリスもそんなに動いていない
jobファイルで記述する
- Azkaban用語
- project
- job
- flow
- ジョブの履歴を見れる
- スケジューリング可
- failure options
- finish all possible
- 依存関係のないジョブは継続して実行される
- デフォルトじゃない
- finish all possible
- concurrent execution options
- skip execution
- run concurrently
- pipeline
SLA notification
- サービスレベル
- ジョブ実行が一定時間をオーバーしたら通知
後続確認の定義○
- スケジューリング△
- 実行処理の切り替え ☓
- 後続の処理の実行△
- 失敗や遅延の通知○
- GUIからの確認○
ユーズケース
- hadoopジョブの管理
- APIを使っている
- 1フロー別に1ファイルを書いている
- 内製フレームワークを使ってAzkabanを実行している
流れ
GitHub→Jenkins→Azkaban
- バージョン管理とデプロイはできる
DB/Azkaban/Hadoop/InfiniDB Netezza Presto/Saiku Pentaho Cognos Prestogres
状況
- 120のフローがスケジューリング
- ほぼ日次バッチ
- Hive関係のもの
- バッチサーバにAzkabanでやっていて、webもexecuteも同じサーバにおいてる
- テンプレートを作り、変数や名前を渡すようにした
- SLAオプションは使っていない
- プルリクエストが通ったらつかう
- HTTPジョブコールバックは使っていない
- hipchatを使っている
所感
- シンプルに使える
- API/UIは便利
- 開発を活発にするためにはジョブの数をメーリスに投げてみるといいかもしれない
- 開発者へのモチベーションアップ