- Workflow Engines Meetup #1 - connpass
- 2017/03/09 Workflow Engines Meetup #1 #wfemeetup - Togetterまとめ
ビッグデータ基盤周りの業務に携わっている者にとって『ワークフローエンジン』は非常に重要な位置を占める"関心事"です。OSSから商用のものまでこの分野のツールやプロダクトは数多く存在し、多かれ少なかれ皆さん苦労しながらもそれぞれの利用ノウハウを蓄積している状況の様です。そんな中、そのものズバリの勉強会が企画されていたので速攻で申し込み、この日参加してきました。
イントロ
会の冒頭は@Mahito氏によるイベント定義・主旨説明について。『ワークフローエンジン』の定義等の共有が為されました。
セッション内容
ワークフローエンジン毎の発表内容は以下の通り。
Digdag:Digdagの特徴とQuick Start
この日古橋氏は米国カリフォルニア州、マウンテンビューからの中継発表。発表時の米国時間は夜中だった模様。遅い時間にありがとうございました。
以下発表メモ。
ワークロードの自動化とは
求められる機能は多種多様。
ワークフロー自動化周りの製品について:古橋氏の調べた限りだとOSS/有償製品共に以下の様なラインナップで多数存在。
- OSS
- 有償製品
ワークフローの定義方法による分類
- プログラミング言語型:Luigi、Airflow
- 長所:何でも書ける、複雑な処理が自由自在、gitバージョン管理が容易
- 短所:読み書き双方でコードの理解が必須、ワークフロー定義の全体像の俯瞰が困難
- GUI型:Rundeck、Jenkins
- 長所:シンプルなワークフローの組み上げが簡単、誰でも開発&管理可能
- 短所:複雑なループ処理等を書くのが辛い、バージョン管理が困難、再現性が低い(別環境に同じワークフローをデプロイするのが困難)
- 定義ファイル+スクリプト型:Makefile、Azkaban
- 長所:gitでバージョン管理可能、それなりに読み書きし易い
- 短所:読み書き双方でスクリプトの理解が必要、複雑な処理の記述が煩雑になる、制約多め
- プログラミング言語型:Luigi、Airflow
Digdagの登場:定義ファイル+オペレータ+グループ化
ソースコードの解説を加えながらDIgdagのデモ実演。
また、主だったユースケースを幾つかピックアップし、そのユースケースをDigdagで実現するにはどう書くか、という観点で幾つかの記載例の解説もありました。利用可能なオペレータの一覧は下記ドキュメントを参照。
まとめ:参考情報
Jenkins:Jenkins 2.0 Pipeline & Blue Ocean
Jenkins2.0から対応する様になったプラグイン、PipelineとBlue Oceanに関する解説がメインとなったセッション。 こちらの内容についてはスライド資料が既に展開されているため、発表メモについては割愛します。
Luigi:Luigiを使っている話
- 発表者:takacy(@bwtakacy) 氏
リクルートマーケティングパートナーの@bwtakacy氏、スタディサプリ・データ分析基盤にてLuigiを使っているとの事。以下構成図。
日次処理(の規模感)
- Embulkで50以上のテーブルを連携
- Luigiで30以上のHiveクエリを実行
- TD Workflow(Digdag)で10以上のPrestoクエリを実行
- TD上のスケジュールクエリも10個以上存在
- 複数の部門に渡り、20以上のレポートを提供
Luigiの概要
Luigiの範囲外となる部分
- リアルタイム処理・長期間継続実行の処理には不向き
- 処理の分散実行は未サポート
- 処理スケジュール起動やトリガ起動は出来ない:スタディサプリデータ基盤ではJenkinsからLuigiをスケジュール起動
- スケーラビリティは追求していない:数千くらいなら行けるが数万規模は無理
Luigiの用語
簡単な例:
- スタディサプリでの使用例:
インストールと実行
Luigiに対しての思う所等
- CASE1.TASKの実行時間が知りたい
- コンソールログはそれなりに出るが、各TASKの実行時間は出ない!
- 解決策)PROCESSING_TIMEイベントを使えば出せる。
- CASE2.並列実行とコマンド戻り値
- デフォルトではTASKの失敗が起きてもluigiコマンドの戻り値は0。戻り値によるエラーハンドリングが出来ない。
- 解決策)設定ファイルにてretcode設定を行い、luigiコマンド起動時に読み込ませる事で対応可能。
異常発生の種類に応じた戻り値を設定出来る。
- Luigi.cfg
- CASE1.TASKの実行時間が知りたい
Luigiのハマりどころ
- 1.RETCODEをバイパスしたワークフローが出来てしまう
- 2.並列実行すると戻り値がおかしくなる:こちらはパッチ投稿で解決済
DigdagとLuigiの使い分けについて
Azkaban:Azkaban in my use case
- 発表者:wyukawa(@wyukawa) 氏
LinkedIn社でHadoopの依存関係を解決する為に実装されたツール。モダンではない『おっさんに優しい』Javaで書かれているプロダクトなのだそうです。こちらのセッションについても資料が既に公開されているのでメモは割愛します。
Airflow:Apache Airflow(incubating)の紹介
発表者:Kengo Seki(@sekikn39) 氏
Apache Airflowに興味を持った背景
Apache Airflowの概要・機能紹介
画面要素を見せながらの用語解説。
既存のOperatorの例
- 参考:Concepts — Airflow Documentation
- コマンド発行系:
- BashOperator, DockerOperator, SimpleHttpOperator, PythonOperator
- SQL発行系:
- HiveOperator, JdbcOperator, MsSqlOperator, MySqlOperator, OracleOperator
- PigOperator, PostgresOperator, SqliteOperator
- データ転送系:
- HiveToDruidTransfer, HiveToMySqlTransfer, MsSqlToHiveTransfer
- MySqlToHiveTransfer, PrestoToMySqlTransfer, RedshiftToS3Transfer
- S3FileTransformOperator, S3ToHiveTransfer
- 通知系:
- EmailOperator, SimpleHttpOperator, SlackAPIPostOperator
- 自作のOperator定義も可能。
その他の概念や機能
デモ実演:架空のペット店の売上データの整形・集計・分析を題材としたデモを実践。
Apache Airflowへの要望
Airflow Meetup Tokyo?
- Airflow PMC chairに会ったところ、東京でもmeetupを開催してみては?との提案をもらう
- 米国西海岸では2〜3ヶ月に1回のペースで開催しているらしい
- テレカン・英語で良ければスピーカーの紹介も
- Airflow PMC chairに会ったところ、東京でもmeetupを開催してみては?との提案をもらう
クロージング
最後は次回開催についてのざっくりな構想など。場所や日時は未定となっているものの、扱うテーマについてはApache Oozie/StackStorm/Trigrav/Rukawa等が既に発表候補として挙がっているようです。
まとめ
1テーマ約20分、合計5つの『ワークフローエンジン』に関する発表となりましたがいずれも機能の概要を把握する上では非常に充実した内容となっていたと思います。個人的に幾つか興味があるプロダクトの話も聞けたので色々と参考になる部分も得る事が出来ました。第2回も非常に楽しみですね!