目次
Digdagの概要
OSSのワークフローシステムの一つ。Airflow同様、スケジューリングやモニタリングのプラットフォームとして、データ基盤のETL処理で使われることが多い。
AirflowほどUIは作り込まれておらず、結構シンプルな構造になっている。
【OSSワークフローシステム】Airflowについてまとめる
主に以下の用途で使われることが多い。
- ジョブの分散処理、依存関係処理
- yamlでの処理定義ができる
- ログ管理が可能
メリット
- yamlでの定義のため人によっては楽(好みの問題)
- 機能的にはAirflowでできることは大体できる印象
- Airflowよりシンプルな記述ができる
デメリット
- yamlファイルが量産されて、管理が大変
- javaのバージョンに指定あり(8or11)
- AirflowほどUIは作り込まれていない
- フルマネージドにしたいときには、GCPの他のツール(cloud runやRDS等)を組み合わせて構築する必要があり、工数がかかる
環境構築して動かしてみる
環境
- MacOS
- java 8
- Digdag 0.10.3
※Digdagはjavaのバージョンが8か11じゃないと動かない。ほとんどの人がバージョンを切り替えないといけない且つ躓きやすいポイントなので、その方法も記載する。
現状ダウンロードされているjavaのバージョン確認
/usr/libexec/java_home -V

javaのバージョン管理できるモジュールをインストール
brew install homebrew/cask-versions/java-beta --cask
jdk8をインストール
brew install --cask adoptopenjdk8

javaのPATHをjdk8に変更する
./zshrcもしくは./bashrcに追記する
export JAVA_HOME=`/usr/libexec/java_home -v "1.8"`
export PATH="$PATH:${JAVA_HOME}/bin"
javaのバージョンを確認する
java -version

以下より公式ドキュメントを参照して進める。
http://docs.digdag.io/getting_started.html#downloading-the-latest-version
digdagをインストール
curl -o ~/bin/digdag --create-dirs -L "https://dl.digdag.io/digdag-latest"
chmod +x ~/bin/digdag
サンプルのワークフローを作成する
mkdir digdag
digdag init mydag
cd mydag
digdag run mydag.dig
ブラウザから動かしてみる
digdag server -o ./ -n 8081
※カレントディレクトリ(/digdag/をdatabaseに指定)
にアクセスし、digdagのブラウザを表示。最初はプロジェクトが何もない状態になっているはず。

GUIから操作することも可能だが、面倒なのでコマンドでmydag.digをpushする。
digdag push mydag -e localhost:8081
「mydag」という名前でプロジェクトとワークフローが作成される。右上の「RUN」をクリックすると、yaml定義のワークフローが実行され、sessionsに追加される。

サンプルのyamlファイルの中身
- 開始のsession_timeの表示
- 時刻表示
- 配列[first, second, third]と配列[dog, cat]の二つをランダムに組み合わせてループで表示
- 終了のsession_timeの表示
timezone: UTC
+setup:
echo>: start ${session_time}
+disp_current_date:
echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')}
+repeat:
for_each>:
order: [first, second, third]
animal: [dog, cat]
_do:
echo>: ${order} ${animal}
_parallel: true
+teardown:
echo>: finish ${session_time}