by shigemk2

当面は技術的なことしか書かない

memo: Azkaban #wfemeetup

memo: Azkaban #wfemeetup

  • ジョブ管理ツール
  • Hadoopのジョブ依存関係を解決するために作られた
    • あんまりモダンじゃないJavaで実装されていること
    • WebServerがGUIを提供
    • ExecuterServerでジョブを実行
  • 基本的なことはできるが、高度なことはできない
    • 依存関係を貼る
    • 実行時間のチェック
    • スケジューリング
    • 失敗通知
    • リトライ
  • ファイルができたら実行みたいなのはできない
  • 通知はメールだけ
  • バイナリがないのでソースをビルドする必要がある
  • 開発もあんまりアクティブじゃない
  • メーリスもそんなに動いていない

  • jobファイルで記述する

  • Azkaban用語
    • project
    • job
    • flow
  • ジョブの履歴を見れる
  • スケジューリング可
  • failure options
    • 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は便利
  • 開発を活発にするためにはジョブの数をメーリスに投げてみるといいかもしれない
    • 開発者へのモチベーションアップ