Edited at

OSSのワークフローエンジンを使ってみた感想

先日ラスベガスで開催されたre:Inventに参加し、その際にデータ分析基盤系のセッションはほぼ参加したのですが、Job管理ツールの話がかなり出ていたのが印象的でした。

AWSにはData PipelineというJob管理サービスがあるのですが、それではなくOSSのJob管理ツールを使っているところが多い印象でした。

日本では自分の観測範囲だとまだ使っているところがあまり多くない印象ですが(実際自分もほとんど使ったことない)、いくつか候補を絞って触って見たので感想を書きます。

あくまでJenkinsしか使ったことがないような個人の感想としてお読みください。。


Airflow


  • Airbnbが開発元

  • re:Inventでは多くのセッションで紹介されており、一番勢いがある印象を受けた。

  • 依存関係はPythonで書く

  • タスクの登録はUIからやるのではなく、コマンドラインから登録

  • Python力を前提にしている感じがある


    • 単純にコマンドを実行したいだけでもAirflowのBashOperatorから実行する必要がある。

    • pipでインストール出来る



  • GUIからJobの登録はできない

  • UIやデザインはモダンでCoolな印象だがわかりにくい。

  • DaemonがUIとWorkerとSchedulerといった形で独立している

  • インストールが長い、LocalのMACで30分くらいかかった

  • Hadoop(HDFS)との連携機能

  • 各種Data Sourceとの連携機能


    • Presto

    • mysql

    • sqlite

    • hive




参考

Airflow’s Documentation — Airflow 1.0.0 documentation


Luigi


  • 開発元はspotify

  • re:Inventでは2番手と言った印象、Workflow Managerの候補には必ず上がっていた。


    • 実際Luigiの説明に時間をかけているセッションもあった。



  • Python力を前提にしている感じがある


    • 単純にコマンドを実行したいだけでもPythonを書く必要がある。

    • PythonのClassに決まったメソッド名で処理を記述する(それが1タスクになる)

    • 依存関係もPythonで記述

    • pipでインストール出来る



  • GUIからJobの登録はできない

  • UIやデザインはモダンでCoolな印象。

  • 最近2.0.0というメジャーバージョンアップがされた。(何が変わったかは追いきれてない)

  • Hadoop(HDFS)との連携機能


    • もちろんPythonで書く必要がある




参考

Example – Top Artists — Luigi 1.0 documentation

Python - データフロー制御フレームワークLuigiを使ってビッグデータ解析をする - Qiita


Azkaban


  • 日本ではかなり使われている?使いやすいと評判

  • Java製(メモリをもりもり喰うかどうかは不明)

  • JavaのProperty file形式でJobを記述

  • Property fileの塊をZipでUPLOADする。(GUIからJobの登録が出来る)

  • 標準ではないがProperty fileを使わずyamlで依存関係を記述する方法もある(Azkabanについて書く - wyukawa’s blog)


参考

Azkaban

Azkabanについて書く - wyukawa’s blog

SIOS ビッグデータ技術ブログ: Azkabanを使って依存関係のあるジョブの管理を行う(インストール編)


Rundeck


  • 試した中ではJenkinsに一番近い(あくまで個人の主観です)

  • Java製(メモリをもりもり喰うかどうかは不明)

  • yumでインストールできる。

  • 基本的にGUIからJobの登録をする。

  • Cron、日付指定両方が可能

  • UIやデザインはモダンでCoolな印象(あくまで個人の主観です)

  • Jenkinsと同様プラグインアーキテクチャが採用されているが、Jenkinsに比べてPluginが圧倒的に少ない。

  • Jenkinsからあえて変える理由が見当たらなかった。


参考

Rundeck.org - Job Scheduler and Runbook Automation

ジョブスケジューラ「Rundeck」を試してみる | Developers.IO


総括


  • イメージ的にはAzkaban, Luigi, Airflowが同カテゴリ、JenkinsとRundeckが同カテゴリという印象


    • 前者はコードでJOBを書き、後者はGUIからJOBを作る



  • Pythonがある程度出来る人はLuigi、Airflowはささりそう、逆にそうでないとつらそう


    • アメリカではPython勢力がかなり強いという背景もあり、Luigi、Airflowが人気という部分もありそう。



  • GUIの登録だと本番とステージングで設定が乖離していく傾向がある、そこらへんを回避する仕組みがRundeckにあれば迷わず採用していた。

  • Jenkinsになれた人ならRundeckが一番入りやすそう


    • とはいえ、あえて変える理由も見当たらない