最近データフローオーケストレーションツールであるApache NiFiが面白いため、実際どういうものなのか、の概要をまとめてみます。
Apache NiFiとは?
一言で言うと、データフローオーケストレーションツール、となります。
元々は米国家安全保障局(NSA)が開発していた「Niagrafiles」というプロダクトで、2014年11月にオープンソースとして寄贈されました。
下記の画像のように、画面上でストリーム処理を行うデータフローを定義し、動作させることが出来ます。
参照:https://nifi.apache.org/
2015年7月にApacheのTopレベルプロジェクトになり、開発が進められています。
また、2015年8月下旬には、NiFiを手がける企業Onyaraが、Hortonworksによって買収され、HortonWorksからNiFiの独自ディストリビューションである「HortonWorks DataFlow」が提供されています。
"移動するデータ"であるNiFiと、"静止しているデータ"であるHadoopを組み合わせることで、より広い範囲のデータを扱えるようにしよう・・という狙いのようです。
Apache NiFiの特長
Apache NiFiのトップページより、NiFiには下記のような特長があります。
NiFiは、スケーラブルなデータフローを有向グラフとして定義し、データのルーティング、変換、中間ロジックを組み合わせることが出来ます。
下記のような機能を有しています。
- WebベースUI
- 設計、制御、フィードバックや監視がシームレスに実行可能
- 高い設定性
- 信頼性と速度をどちらを取るかの調整
- 低レイテンシと高スループットの調整
- 動的な優先順位付け
- フローを動作中に変更可能
- バックプレッシャー機構
- データ由来の明確化
- データフローをはじめから最後までトラッキング
- 拡張に対して開かれた設計
- 自前でプロセッサを開発可能
- 高速な開発と容易なテストが可能
- セキュア
- SSL、SSH、HTTPS等暗号化方式をサポート
- プラガブルなロールベースの認証/認可
と、言う感じで概要を見れば見る程わくわくしてくる要素満載になっています。
以前この手のデータ変換処理をApache Camel等で書いていたことがあるのですが、それが画面から定義できるようになり、かつスケーラブルに動作させることができるというのは相当大きいと思います。
とりあえずNiFiを起動させてみる(Windows)
まず手始めにとりあえずNiFiを起動させてみます。
といっても起動するだけならDownloadPageからNiFiのアーカイブをダウンロードし、展開して下記のバッチを実行するだけです。
実行後、下記のアドレスにアクセスすると、NiFiの画面が表示されます。
データフローを定義できるメニューがそろっていますね。
http://localhost:8080/nifi/
最後に
NiFiとは何か、のさわりのさわりだけをまとめて、後は実際に起動だけさせてみました。
次回以降はまずは一パターン動作させてみて、その後NiFiのOverviewやアーキテクチャを見てみようと思います。