by shigemk2

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

メモ DigdagによるRedshift + EMRの自動制御とデータ分析アプリケーションの開発 #tdtech

digdag

github.com

(途中参加)

  • ワークフローエンジン

  • Aをやって、Bをやって、でもBが失敗したらCをやる、というのを、コードを書かないで制御する

  • サーバー

  • どこの環境でも動くこと
  • ワークフローが手元でも動く
  • ステップを足す→ローカルで実行する
  • サーバーでアプローチすればサーバーで動く

  • Luigi

    • 上から下へワークフローを動かす
  • digdag
    • digdag ネスト出来るようにした
    • グループを作れる
  • ある別のシステムがファイルをアップロードする→アップロードできたらコピーする
  • パラメータは一部ビルトイン

  • tdのクエリを実行する

  • redshiftのクエリを実行する
  • big query
  • td for each
  • ポスグレ

  • メール

などなど…

  • slackへ通知も出来る

  • ローカルで実行する→デプロイする

  • サーバAで実行する→サーバBでも実行できるようにする

  • 特定のプログラミング言語を特定のバージョンで特定の環境のなかでやりたい

    • dockerオプション
    • ubuntu:16.04 と書けば、ubuntu16.04のなかでrubyを実行したり出来る
  • loopが出来る
  • プラス単位で書く

  • load_data

  • load_users
  • load_items

デモ

  • アイテムを買った人に対してその場所でのおすすめアイテムをレコメンデーションする

  • TDからデータを集める

  • 処理は並列で行う
  • 集めたデータをS3に置く
  • Amazon EMRでSparkを実行する
    • 新しいクラスター名をつくり、、アプリケーションを投入して実行し、クラスターを閉じる
    • javaで書いたsparkアプリケーション
    • td-spark
      • sparkのデータをtreasureで参照する
  • redshift→elastic searchで全文検索する
  • 前回の処理が成功したら特定のジョブをスキップすることも出来る

workflow steps

  • よくあるワークフローは複雑
  • これらをグループ化して、実行順序を制御する

web ui

  • タスクの進捗、ログ、成功失敗を確認することが出来る
  • 登録はまだ無理

  • エラー通知は可能

  • YAML
  • パラメータを利用して、過去分を再実行することが出来る

  • digdag ui/digdagはまだ発展途上であること