LoginSignup
6
7

More than 5 years have passed since last update.

AWSでdigdagを試したメモ (get started)

Last updated at Posted at 2016-09-29

Treasure Data社製のDataflow Automation OSS DigdagをAWS上で試してみた。
とりあえず EC2(Amazon Linux) x 1、RDS(postgresql) x 1 の構成で。
クライアントサーバモデルだが、今回はEC2 1台でクライアントとサーバを兼ねる。

参考)
https://github.com/treasure-data/digdag
http://www.digdag.io/

概要)
https://youtu.be/OAaFr_CnXvk

参考)
http://blog.techium.jp/entry/2016/06/20/090000
http://dev.classmethod.jp/server-side/getting-started-digdag/

digdagインストール

Amazon Linuxで以下スクリプトを実行
javaのバージョンを1.8にする必要あり (2016.9時点)

#re-install java latest version
sudo yum -y remove java
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u102-b14/jdk-8u102-linux-x64.rpm
sudo rpm -ivh jdk-8u102-linux-x64.rpm 


#install digdag
sudo curl -o /usr/local/bin/digdag --create-dirs -L "https://dl.digdag.io/digdag-latest"
sudo chmod +x /usr/local/bin/digdag
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

digdag --helpコマンドが有効になればOK

PostgreSQLを準備

digdagのプロジェクト情報等を格納するDBに、デフォルトでは永続化されないオンメモリDBのH2が設定されるが、通常運用を想定するとPostgreSQLモードなのでRDSで準備。

DBインスタンス作成後、digdag用のDB設定ファイルを作成。
postgresql.config

database.type = postgresql
database.user = DBユーザ  
database.password = パスワード
database.host = XXX.ap-northeast-1.rds.amazonaws.com ※ホスト名
database.port = 5432
database.database = DB名

digdag サーバーを起動

作成したDB設定ファイルを引数に以下コマンド起動

digdag server -c postgresql.conf

これでdigdag serverが起動

サンプルデータフローを作成

プロジェクト作成

digdag init test

※プロジェクト名:test

すると、プロジェクト名のディレクトリが生成され、中にtest.digが作られる。
以下のように編集。

timezone: UTC

+task1:
  sh>: echo "execute task1"

+task2:
  sh>: echo "execute task2"

内容はshellで記載されたtask1実行後にtask2を実行するだけ。
 "+" はタスクを意味する。意味付けをして、+loadとか+getとか任意に決めても良い。
sh>: はshellでタスクの処理を書く という意味。
他にも、py>: pythonや、rb>: ruby などもあり、好きな言語で処理を書ける。

このディレクトリ上で以下を実行し、作成したプロジェクトをdigdag serverへpushする。
digdag push [プロジェクト名]

git的にコードの履歴管理もできる模様。更新があれば再度Pushで上書きすれば良い。

$ digdag push testpj 
2016-09-29 11:09:31 +0000: Digdag v0.8.15
Creating .digdag/tmp/archive-3107467629901268204.tar.gz...
  Archiving test.dig
  Archiving query.sql
Workflows:
  test

Uploaded:
  id: 1
  name: testpj
  revision: 9c30a1a1-fb73-4031-a836-bce014453fc4
  archive type: db
  project created at: 2016-09-29T11:09:32Z
  revision updated at: 2016-09-29T11:09:32Z

Use `digdag workflows` to show all workflows.

pushされたプロジェクトの確認コマンド

$ digdag workflows
2016-09-29 11:09:41 +0000: Digdag v0.8.15
  testpj
    test

Use `digdag workflows <project-name> <name>` to show details.

サンプルデータフローを実行

digdag start [プロジェクト名] [ジョブ名] --session now

$ digdag start testpj test --session now
2016-09-29 11:14:10 +0000: Digdag v0.8.15
2016-09-29 11:14:11 +0000 [INFO] (XNIO-1 task-12): Starting a new session project id=1 workflow name=test session_time=2016-09-29T11:14:11+00:00
Started a session attempt:
  session id: 1
  attempt id: 1
  uuid: 8c7a517c-906f-4a92-be3e-af6e9c8e09db
  project: testpj
  workflow: test
  session time: 2016-09-29 11:14:11 +0000
  retry attempt name: 
  params: {}
  created at: 2016-09-29 11:14:11 +0000

* Use `digdag session 1` to show session status.
* Use `digdag task 1` and `digdag log 1` to show task status and logs.

$ 2016-09-29 11:14:12 +0000 [INFO] (0170@+test+task1): sh>: echo "execute task1"
execute task1
2016-09-29 11:14:12 +0000 [INFO] (0170@+test+task2): sh>: echo "execute task2"
execute task2

動いた。

#実行結果ログを確認

$ digdag sessions
2016-09-29 11:18:48 +0000: Digdag v0.8.15
Sessions:
  session id: 1
  attempt id: 1
  uuid: 8c7a517c-906f-4a92-be3e-af6e9c8e09db
  project: testpj
  workflow: test
  session time: 2016-09-29 11:14:11 +0000
  retry attempt name: 
  params: {}
  created at: 2016-09-29 11:14:11 +0000
  kill requested: false
  status: success

今後は、以下を試す予定
・ちゃんとしたETLと自動リカバリ
・docker上で稼働
・複数クラスタでの分散処理

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7