digdag tutorial

ワークフローエンジンDigdagチュートリアル

以下の条件のデータ収集エンジンが欲しくなりました。

  • スケーラブル
  • あちこちのGB級、TB級のバックアップデータが分散して保存されている
  • あちこちに保存されているバックアップデータを一箇所に集める
  • 集めたデータを加工して、どこかに一括して入れる
  • 「どこかに一括して入れる」先は、まだこれから検討

当初は「ただ集めて、それを加工して、どこかに突っ込んであげればいいんでしょ」くらいに簡単に考えていました。

しかし、色々考えていくと、普通に処理の流れが結構複雑なことに気が付きます。

そこで、ワークフローエンジンを幾つか検討して見たいと思います。

  • jenkins
  • apache airflow
  • Digdag

Digdagのインストール

Mac環境なので以下のコマンドのみでインストール可能です。

~/v/u/C/my_site ❯❯❯ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
~/v/u/C/my_site ❯❯❯ brew install digdag 
~/v/u/Codes ❯❯❯ digdag -help
2017-01-04 14:23:50 +0900: Digdag v0.9.1
Usage: digdag <command> [options...]
  Local-mode commands:
    init <dir>                         create a new workflow project
    r[un] <workflow.dig>               run a workflow
    c[heck]                            show workflow definitions
    sched[uler]                        run a scheduler server
    selfupdate                         update cli to the latest version

  Server-mode commands:
    server                             start server

  Client-mode commands:
    push <project-name>                create and upload a new revision
    download <project-name>            pull an uploaded revision
    start <project-name> <name>        start a new session attempt of a workflow
    retry <attempt-id>                 retry a session
    kill <attempt-id>                  kill a running session attempt
    backfill <project-name> <name>     start sessions of a schedule for past times
    reschedule                         skip sessions of a schedule to a future time
    log <attempt-id>                   show logs of a session attempt
    workflows [project-name] [name]    show registered workflow definitions
    schedules                          show registered schedules
    disable <schedule-id>              disable a workflow schedule
    disable <project-name>             disable all workflow schedules in a project
    disable <project-name> <name>      disable a workflow schedule
    enable <schedule-id>               enable a workflow schedule
    enable <project-name>              enable all workflow schedules in a project
    enable <project-name> <name>       enable a workflow schedule
    sessions                           show sessions for all workflows
    sessions <project-name>            show sessions for all workflows in a project
    sessions <project-name> <name>     show sessions for a workflow
    session  <session-id>              show a single session
    attempts                           show attempts for all sessions
    attempts <session-id>              show attempts for a session
    attempt  <attempt-id>              show a single attempt
    tasks <attempt-id>                 show tasks of a session attempt
    delete <project-name>              delete a project
    secrets --project <project-name>   manage secrets
    version                            show client and server version

  Options:
    -L, --log PATH                   output log messages to a file (default: -)
    -l, --log-level LEVEL            log level (error, warn, info, debug or trace)
    -X KEY=VALUE                     add a performance system config
    -c, --config PATH.properties     Configuration file (default: /Users/uee10000/.config/digdag/config)

Use `<command> --help` to see detailed usage of a command.

上記でインストールは完了です。

Tutorial

公式にチュートリアルがあるので、これを一通り触ってみます。

http://docs.digdag.io/getting_started.html

~/C/w/digdag ❯❯❯ digdag init mydag
2017-01-04 14:26:40 +0900: Digdag v0.9.1
  Creating mydag/mydag.dig
  Creating mydag/.gitignore
Done. Type `cd mydag` and then `digdag run mydag.dig` to run the workflow. Enjoy!
~/C/w/digdag ❯❯❯ ls
mydag
~/C/w/digdag ❯❯❯ cd mydag
~/C/w/d/mydag ❯❯❯ view mydag.dig
~/C/w/d/mydag ❯❯❯ digdag run mydag.dig
2017-01-04 14:27:26 +0900: Digdag v0.9.1
error: Found too old java version (1.8.0_60). Please use at least JDK 8u71 (1.8.0_71).
~/C/w/d/mydag ❯❯❯ brew install Caskroom/cask/java
~/C/w/d/mydag ❯❯❯ java -version
java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

Share