-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_ApacheNiFiFirstStep
-
戻る
- Apache NiFiファースト・ステップ(本ページ)
- Apache NiFiセカンド・ステップ
- ファーストステップ @ Windows。
- 基本的なことは、コチラで確認して下さい。
- 以下からダウンロード(Windowsならzipファイル形式のもの)
-
Apache NiFi Downloads
https://nifi.apache.org/download.html -
最新の、nifi-toolkitではない方をダウンロード。
(nifi-toolkitは多分色々なツールが同梱されてる) -
ダウンロードしたらMD5 or SHA1などのハッシュ値をチェックする。
(HTTPSではないので、バイナリがオカシクなることが有り得る。)certutil -hashfile ...nifi-1.6.0-bin.zip MD5 certutil -hashfile ...nifi-1.6.0-bin.zip SHA1
任意のパスに解凍すればイイらしい。とりあえず、Cドラ直下に解凍。
(JMeterっぽい。ZIP64の可能性があるので解凍ツールに注意する。)。
binフォルダ以下の「run-nifi.bat」バッチを管理者実行。
(これもまたJMeterっぽい。設定ファイルなどは取り合えずスルー)。
-
2018年9月よりOracke Javaは有償となったため、
同等の機能を持つAdopt Open JDKをインストール- Java8のLTS版で、hotspotを選択する。(Java有償化について調べてみた。の該当節を参照)
-
必要に応じて、confフォルダ以下のnifi.propertiesでポート番号を変更する。
(私の環境で、Docker for windowsが8080を使用していてUnauthorizedでハマった。
故に、nifi.propertiesのnifi.web.http.portで、ポート番号を8081に変更。)
※ 改めてやってみると、「run-nifi.bat」実行後のロードが長い(2-3分?)。

以下の辺りを理解しつつ、次へ進む。
- Getting Started with Apache NiFi > I Started NiFi. Now What?
https://nifi.apache.org/docs/nifi-docs/html/getting-started.html#i-started-nifi-now-what
- Processorの追加により、データフローを作成を開始する。
- Processorについては、コチラ(Apache NiFiの該当節を参照)を参照。
-
ヘッダのComponentToolBarのProcessorアイコンを方眼紙風のキャンバスにD&D。
-
追加するProcessorを選択できるダイアログが表示される。
-
Processorを選択して[Add]ボタンを押下(必要に応じて[Filter]可能)
-
ここでは、ファースト・ステップにお似合いのProcessorを追加する。
- [GetFile Processor]
- [LogAttributes Processor]
-
Processorをダブルクリック(若しくは、右クリック -> configure)で設定を行う。
-
[GetFile Processor]の設定を、[Property]タブから行う。

-
ポイント
- 太字のプロパティは必須のプロパティ
- 必須プロパティが構成されるまで、Processorは開始できない。
-
設定値
- Input Directory : ./data-in
-
-
[LogAttributes Processor]の設定を、[Settings]タブから行う。

-
ポイント
末端のProcessorになるので、FlowFileの処理が完了した場合、
データを削除することを考慮する必要がある。 -
設定値
- Automatically Terminate Relationships : checked to [success]\
-
-
問題がある場合は、warningマークが表示される。
ここでは、接続が無いため、warningマークが表示される。 -
また、Processorを右クリックし、
[View usage]を選択すると、Processorのヘルプが表示される。
Connectionで接続する場合、以下のように操作する。

するとダイアログが表示されるので
-
[Settings]タブから設定する。
-
Connectionに名前を付ける [Name] : hogehoge
-
Relationshipの設定 : 既定値
-
Dataの有効期限とQueueの設定
- [FlowFile Expiration] : 既定値
- [Back Pressure Object Threshold] : 既定値
- [Back Pressure Data Size Threshold] : 既定値
-
キューの優先順位の設定
1つ以上のPrioritizerを設定し、
1つ目のPrioritizerで優先順位が同じだった場合、
2つ目のPrioritizerで優先順位が再評価される。- [Selected Prioritizers] :
FirstInFirstOutPrioritizer
OldestFlowFileFirstPrioritizer
- [Selected Prioritizers] :
-
-
[Detail]タブ
- Relationshipの設定 : 既定値

- ここまでの設定で、Processorは停止状態になる。
-
ぞれぞれ、Processorを選択してOperatorの再生ボタンを押下する。

-
すると、以下の状態になり、データフローを実行できる。

-
この状態で、data-inフォルダにファイルを放り込むと確実に処理されていることを確認できるのだが、
LogAttribute 1.6.0 の仕様が No description provided. のため、最後まで流れたのかどうかを全く確認できない。
そこで急遽、PutFileというProcessorを追加・接続して、以下のように設定して動かしてみる。
-
PutFile Processor
- Directory : ./data-out
- [Automatically Terminate Relationships] : checked to [failure] and [success]
-
Connection
- [Name] : hogehoge

すると、data-inフォルダに放り込んだファイルがdata-outフォルダに出力されることを確認できる。
※ 後日談:LogAttributeについての仕様を発見した。(Apache NiFi - Processorの該当節を参照)
前述の、GetFile - PutFile の例にSplitText Processorを追加して、
以下のようなデータフローを定義して分割を評価できる。

※ なお、上記のようにConnectionを曲げたい場合は、矢印上でダブル・クリックする。
-
Processor
-
SplitText
Line Split Count : 2 -
PutFile
- PutFile(Connection 2-1 に接続)
Directory : ./data-out1 - PutFile(Connection 2-2 に接続)
Directory : ./data-out2
- PutFile(Connection 2-1 に接続)
-
-
Connection
- [Name] : 2-1
[Relationship] : original, failure - [Name] : 2-2
[Relationship] : splits
- [Name] : 2-1
-
Processorを選択していない状態でOperatorの再生ボタンを押下する。
-
data-inフォルダに放り込んだファイルがdata-out1, 2フォルダに出力されることを確認できる。
-
data-out1 : data-inに放り込んだファイル
-
data-out2 : SplitTextで抽出した先頭の2行のテキストを含むファイル
-
SplitContent、MergeContent Processorを追加、
以下のようなデータフローを定義して分割・集約を評価できる。

-
Processor
-
GetFile
Directory : ./data-in -
PutFile
- PutFile(Connection 3-1 に接続)
Directory : ./data-temp - PutFile(Connection 3-2 に接続)
Directory : ./data-out
- PutFile(Connection 3-1 に接続)
-
分割・集約
-
SplitContent([;]区切りで分割)
Byte Sequence : 3B ※ [;]を意味する。
Automatically Terminate Relationships : original -
UpdateAttribute(ファイル名変更)
filename : ${UUID()} ※ [+]ボタンでプロパティ追加する。 -
MergeContent(統合) : 既定値
-
-
-
Connection
- [Name] : 2-1
[Relationship] : splits - [Name] : 2-2
[Relationship] : splits - [Name] : 3-1
[Relationship] : success - [Name] : 3-2
[Relationship] : failure, merged, original
- [Name] : 2-1
-
Processorを選択していない状態でOperatorの再生ボタンを押下する。
-
data-inフォルダに放り込んだファイルがdata-temp、data-outフォルダに出力されることを確認できる。
-
data-temp
- Byte Sequenceで分割されたファイル
- ファイル名は、UpdateAttributeにより、UUIDに変更される。
-
data-out
- 分割後、再び集約されたファイル。
- Byte Sequenceで分割後、マージされるため、Byte Sequenceが削除されている。
-
前述の、GetFile - PutFile の例にCompressContent Processorを追加して、
以下のようなデータフローを定義して変換・処理を評価できる。

-
GetFile
Directory : ./data-in -
PutFile
- PutFile(Connection 2 に接続)
Directory : ./data-temp - PutFile(Connection 4 に接続)
Directory : ./data-out
- PutFile(Connection 2 に接続)
-
変換・処理
-
CompressContent
- Mode : compress
- Compression Format : gzip
-
CompressContent
- Mode : decompress
- Compression Format : gzip
-
- [Name] : 1
[Relationship] : success - [Name] : 2
[Relationship] : failure, success - [Name] : 3
[Relationship] : failure, success - [Name] : 4
[Relationship] : failure, success
-
Processorを選択していない状態でOperatorの再生ボタンを押下する。
-
data-inフォルダに放り込んだファイルがdata-temp、data-outフォルダに出力されることを確認できる。
-
data-temp
CompressContent(compress)で圧縮されたデータ・ファイル -
data-out
CompressContent(decompress)で解凍されたデータ・ファイル
-
ヘッダのComponentToolBarのProcessor・Connectionアイコンを方眼紙風のキャンバスにD&D。
矢印上でダブル・クリックする。
- Terminateしたフローファイルがキューに詰まることがある。
- この場合、Connectionを右クリックして、Empty Queueする。
-
セーブ
-
OperatorからCreate Templateする。
-
ファイルに出力する場合、
- 右上メニューからTemplateを選択し、
- Create TemplateをDownloadする。
-
-
ロード
- ファイルから入力する場合、OperatorからUpload Templateする。
- ヘッダのComponentToolBarのTemplateアイコンを方眼紙風のキャンバスにD&D。
テンプレートを保存する前に、以下の手順を踏む。
- ヘッダのComponentToolBarのProcessGroupアイコンを方眼紙風のキャンバスにD&D。
- ProcessGroupに名称を付与し、ProcessGroup上に他のProcessor+ConnectionをD&D。
これにより、データフローがProcessGroupとして纏まる。
・・・
- 参考資料(Apache NiFiの該当節を参照)
移行メモ
- 「戻る」の並びにある「Apache NiFiファースト・ステップ」は自ページのため、 その旨を補った。
- 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (「セカンド・ステップ」「参考資料」「Apache NiFi - Processor」)は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文に置いた。
- 同名の見出し(「データフロー」「ポイント」「動作確認」「設定する」 「Connection」)が複数あり GitHub Wiki でアンカが衝突するため、 括弧で文脈を補って一意にした。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替え、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。- 元 Wiki の行頭空白によるプレフォーマット・ブロックは、 フェンス付きコードブロックにした。
- 添付画像は本文中に現れる順で
_1から連番を振り直した。
Tags: 移行, Apache NiFi, ファースト・ステップ, Processor, Connection, データフロー, Template, ProcessGroup
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。