Apache Azkaban, Airflow, Luige, Oozie比較
本記事
Apache Azkaban, Airflow, Luige, Oozieのこれらはワークフロー管理に使われるOSSです。 HadoopやSparkなどを使って分散処理をナイトリーに行なっている場合、そのスケージュールリングだったり監視などが大変になってきます。
そのような中で、ワークフロー管理OSSがあるわけですが、どのようにして選定できるかを比較しながら考えます。
tl;dr
比較表は以下の通り。
OSS名 | 開発元 | 年 | 目的 | 主な開発方法 | 留意点 |
---|---|---|---|---|---|
Azkaban |
hoge | Hadoopのバッジ処理を時間単位でスケージューリングする目的。 | GUI | リッチなUIで監視、検索したりすることができる。 | |
Airflow |
Airbnb | 2015 | DAGS のようにワークフローをモニタし、認証し、スケージューリングする目的。 |
Luige のようにプログラムベース |
リッチなCLIツールやUIがある |
Luige |
Spotify | 2011 | 複雑なパイプラインを構築することを手伝う。 | Pythonスクリプトベース | Hadoop Supportがあるが、何もかもに対応しようとしている(Hive, Spark)'。コミュニティが大きい。 |
Oozie |
Yahoo | 見つけれず | Azkaban と同様にHadoopのバッジ処理をスケージューリングする目的。 |
XML ベース |
Azkaban が時間単位でスケージューリングするのに対して、時間、イベント、データの状況でジョブをトリガーできる(データがないのにバッジ処理をしてしまうのを防ぐ)。 もっとも古い。 |
1. Azkaban
1.1 UI
2. Airflow
2.1 UI
3. Luige
3.1 UI
4. Oozie
4.1 UI
結論
Hadoop
でしか使わないか、他に使うかで分かれると感じる。
使う場合はAzkaban、他に使う場合はAirflowかLuigeでいいのではないでしょうか?
もう一つの考え方としては、「宣言的にかけるかどうか」。
Azkabanは主にGUIなので、同じくプログラムで書きたかったらAirflowかLuigeになる。
やっぱり、差があまり感じられないのでテスト運用してみて、感じたことがあれば追記します。