Digdag x Dockerでモダンなバッチ処理環境を構築

Digdag x Dockerでモダンなバッチ処理環境を構築

http://morizyun.github.io/digdag/ に入門記事を書きましたのでよければこちらも読んでみてください!

82827b046babc7a4d4c54b8b96fee67a?s=128

morizyun

June 09, 2017
Tweet

Transcript

  1. Digdag x Dockerでモダンな
 バッチ処理理環境を構築 twitter: @zyunnosuke blog: http://morizyun.github.io

  2. 今⽇日⾔言いたいこと • Treasure DataのOSS「Digdag」の紹介 • DigdagとDockerを組み合わせてバッチ環境を構築 • 感想は環境構築はちょっと苦労。けど使いこなせば便便利利

  3. Digdagって何? • Digdag = ワークフローエンジン • ワークフローエンジン = 順番に予め定義した処 理理を実⾏行行していく仕組み

  4. Digdagの概要 • タスクをYAML(.dig) ベースで定義 • 依存関係のあるタスクや、並列列でのタスク実⾏行行を定 義できる(バッチ間の依存を可視化) • Dockerベースでタスクを実⾏行行できる •

    gitでバージョン管理理やコードレビューできるので ソフトウェア開発のプラクティスが使える
  5. ワークフローの定義(YAML) _export: foo: 1 !include : 'config/mysql.dig' _error: sh>: tasks/runs_when_workflow_failed.sh

    +step1: sh>: tasks/shell_sample.sh +step2: rb>: MyWorkflow.step2 ← Linuxのexportみたいなの ← エラー時の通知 ← タスク ← Rubyのコードを実⾏行行(要require)
  6. 柔軟なタスクの定義 • `if>:` 条件を満たす場合のみ実⾏行行 • `s3_wait>:` AWS S3にファイルが設置されるのを待 つ •

    `pg>:` PostgreSQLでSQLを実⾏行行します • `bq>:` BigQueryでクエリを実⾏行行して結果をテーブル に保持
  7. スケジュール実⾏行行もできる timezone: Asia/Tokyo schedule: minutes_interval>: 1 +current_date: sh>: echo `date`

    ← cron形式も可能 ← タイムゾーン
  8. Docker ベースで実⾏行行できる • Dockerベースでお望みの環境で処理理を実⾏行行できる _export: docker: image: ubuntu:14.04 +step1: py>:

    tasks.MyWorkflow.step1 ← Dockerイメージ
   を指定
  9. グループごとにタスクをまとめる • Topレベルで prepare => analyze => evaluate • `call>:

    another_workflow.dig`で他のタスク(dig)を呼び出す
  10. Digdag Server • `digdag push`でサーバにprojectを登録 • 複数台のAgentが必要なタイミングでタスクを実⾏行行

  11. タスクの実⾏行行状況をWeb画⾯面で確認 • 画⾯面からログの確認や、タスク再実⾏行行とかできる

  12. 感想 • ワークフローでやりたいことは⼀一通りで きる • 環境構築のコストがそれなりにかかった • 最新バージョン 0.9.12なので、まだまだ PRのチャンス!!

  13. 宣伝 • ⼊入⾨門のブログ記事書きました! • http://morizyun.github.io/digdag/

  14. Appendix

  15. デプロイフロー masterにマージ digdag push (タスク実⾏行行) docker run スクリプト郡 Digdagリポジトリ docker

    push