はじめに
Apache NiFi projectのサブプロジェクトであるMiNiFiの動作確認をしてみました。Hortonworksでも「Apache MiNiFiによる IOT のためのエッジインテリジェンス」として記事が書かれています。例によってHDFは自分のPCでは動きませんので個々のプロダクトを起動させます。
今回はMiNiFiをインストールしたPCからNiFiがインストールされているPCまでファイルの転送を実施してみます。
SFTPやSCPなどと同様にファイル転送をしますが、NiFiでファイル転送すると、ある程度履歴やファイル属性がGUIで確認できます。
1. 前提
以下の環境で動作した内容を記述しています。
- Windows 10 Home (64bit) *Memory 8G
- JDK 1.8
また、NiFiのインストールについては、こちらを参照。
2. MiNiFiの入手
https://nifi.apache.org/minifi/download.htmlよりダウンロードします。
- MiNiFi (Java)
- MiNiFi Toolkit Binaries
それぞれのセクションよりJavaのバイナリ(zip版)をダウンロードします。
3. Nifiの設定
MiNiFiがNifiにアクセスできるようにINPUTポートの設定をします。これによりSite-to-Siteのコミュニケーションが可能となります。
3.1 Nifiのpropety設定と起動
[NiFiをインストールしたフォルダ]\conf\nifi.propertiesの以下の部分を修正します。
今回はSSL通信は使いませんのでsecureオプションはfalseでOKです。
# Site to Site properties
nifi.remote.input.host=localhost
nifi.remote.input.secure=false
nifi.remote.input.socket.port=10000
bin\run-nifi.batでNiFiを起動します。
3.2 Input PortとFile出力の設定
起動したらNifi Canvas上でInput Portの設定をします。「From MiNiFi」という名前で設定してみます。
ファイルの出力が失敗しても成功してもプロセスは終了させるので、SETTINGSのfailureとsuccessは両方チェックします。
PROPERTIESのDirectory(出力先)を指定します。ここではc:\dev\NIFI\outputとします。
From MiNiFiのInput PortからPutFile Processorを接続します。以下のようになればOKです。
3.3 MiNiFi用設定
MiNiFi用の設定はNiFi本体で設定し、それをTemplateとしてExportしてMiNiFiで使用します。
まずはRemote Process Groupを作成します。URLにはLocalhostのURLではなく、PCの実IPでURLを指定します。
PROPERTIESでInput Directoryを指定しますが、NiFiがインストールしてある環境に同じ構造のフォルダ構成がないと警告が出るので、c:\NIFI\inputを作成しておいてから設定します。
GetFile ProcessorとRemote Process Groupを接続します。以下のようになればOKです。
GetFile Processorとsuccess connectionとRemote Process Groupの3つを選択し、Create Templateをクリックします。
Template名を入力し、Templateを作成します。ここでは「MiNiFi Flow」としています。
3.4 Templateのダウンロードと変換
ダウンロードボタンをクリックし、TemplateをXMLファイルとしてダウンロードします。
事前にダウンロードしてあったminifi-toolkit-0.3.0を好きな場所に展開し、ダウンロードしたTemplateをMiNiFi Toolkitのconfig.batでconfig.ymlファイルに変換します。
C:\dev\NIFI\minifi-toolkit-0.3.0>bin\config.bat transform MiNiFi_Flow.xml config.yml
No validation errors found in converted configuration.
作成したファイルはMiNiFiをインストールする別のPCにコピーします。
4. MiNiFiのインストールと起動
4.1 MiNiFiの展開
事前にダウンロードしてあったMiNiFiを動作させたいフォルダに展開します。
C:\dev\MINIFI\minifi-0.3.0 のディレクトリ
2018/01/16 22:27 <DIR> .
2018/01/16 22:27 <DIR> ..
2018/01/16 22:27 <DIR> bin
2018/01/16 22:27 <DIR> conf
2018/01/16 22:27 <DIR> content_repository
2018/01/01 18:03 <DIR> docs
2018/01/16 22:27 <DIR> flowfile_repository
2018/01/16 22:27 <DIR> lib
2016/12/20 14:13 28,824 LICENSE
2018/01/16 22:27 <DIR> logs
2017/11/27 12:08 35,959 NOTICE
2018/01/16 22:27 <DIR> provenance_repository
2016/09/26 11:23 5,014 README
2018/01/01 22:43 <DIR> run
2018/01/16 22:27 <DIR> state
2018/01/16 22:27 <DIR> work
3 個のファイル 69,797 バイト
13 個のディレクトリ 25,663,508,480 バイトの空き領域
4.2 config.ymlのコピー
Templateから作成したconfig.ymlをconfフォルダにコピーします。
4.3 MiNiFiの起動
bin\run-minifi.batを起動します。
C:\dev\MINIFI\minifi-0.3.0>bin\run-minifi.bat
5. 動作テスト
5.1 NiFiの処理を開始
NiFi本体のProcessorをStartします。何も選択せずにStartをクリックするとすべての処理が開始します。
5.2 Inputファイルの準備
MiNiFiを起動させたPCのinputフォルダ(c:\NIFI\input)に適当なファイルを置いてみます。
すると自動的にNiFi本体のoutputフォルダ(c:\dev\NIFI\output)にファイルが移動されます。
5.3 ファイル転送履歴などの確認
Input PortやProcessorを右クリックし、View Data Provinceで転送履歴を確認することができます。
また、転送されたファイルの中身を参照することもでき、テキストファイル、jpegファイルそれぞれに合わせた表示形式でファイルの確認ができました。
参考URL