.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ファーストステップ @ Windows。基本的なことは、コチラで確認して下さい。

インストール

ダウンロードする。

  • 以下からダウンロード(Windowsならzipファイル形式のもの)
  • 最新の、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っぽい。設定ファイルなどは取り合えずスルー)。

  • 必要に応じて、Java のランタイム (JRE)のインストールや、パス設定を行う。
  • 必要に応じて、confフォルダ以下のnifi.propertiesでポート番号を変更する。
    (私の環境で、Docker for windowsが8080を使用していてUnauthorizedでハマった。
    故に、nifi.propertiesのnifi.web.http.portで、ポート番号を8081に変更。)

最も簡単な利用

画面にアクセスする。

※ 改めてやってみると、「run-nifi.bat」実行後のロードが長い(2-3分?)。

手順1

以下の辺りを理解しつつ、次へ進む。

Processorを追加する。

  • Processorの追加により、データフローを作成を開始する。
  • Processorについては、コチラを参照。

追加する。

  • ヘッダのComponentToolBar?のProcessorアイコンを方眼紙風のキャンバスにD&D。
  • 追加するProcessorを選択できるダイアログが表示される。
  • Processorを選択して[Add]ボタンを押下(必要に応じて[Filter]可能)
  • ここでは、ファースト・ステップにお似合いのProcessorを追加する。
    • [GetFile? Processor]
    • [LogAttributes? Processor]

設定する。

  • Processorをダブルクリック(若しくは、右クリック -> configure)で設定を行う。
  • [GetFile? Processor]の設定を、[Property]タブから行う。
    手順2-1
  • ポイント
    • 太字のプロパティは必須のプロパティ
    • 必須プロパティが構成されるまで、Processorは開始できない。
  • 設定値
    • Input Directory : ./data-in
  • [LogAttributes? Processor]の設定を、[Settings]タブから行う。
    手順2-2
  • ポイント
    末端のProcessorになるので、FlowFile?の処理が完了した場合、
    データを削除することを考慮する必要がある。
  • 設定値
    • Automatically Terminate Relationships : checked to [success]

使い方を確認する。

  • 問題がある場合は、warningマークが表示される。
    ここでは、接続が無いため、warningマークが表示される。
  • また、Processorを右クリックし、
    [View usage]を選択すると、Processorのヘルプが表示される。

Connectionで接続する。

接続する

Connectionで接続する場合、以下のように操作する。

手順3

設定する

するとダイアログが表示されるので

  • [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?
  • [Detail]タブ
    • Relationshipの設定 : 既定値
手順4
  • ここまでの設定で、Processorは停止状態になる。
    手順5

データフローを実行する。

実行

  • ぞれぞれ、Processorを選択してOperatorの再生ボタンを押下する。
    手順6
  • すると、以下の状態になり、データフローを実行できる。
    手順7
  • この状態で、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
手順8

確認

すると、data-inフォルダに放り込んだファイルがdata-outフォルダに出力されることを確認できる。

※ 後日談:LogAttributeについての仕様を発見した。

分岐、分割・集約辺りの利用

分割

前述の、GetFile - PutFile の例SplitText? Processorを追加して、
以下のようなデータフローを定義して分割を評価できる。

データフロー

手順9

※ なお、上記のようにConnectionを曲げたい場合は、矢印上でダブル・クリックする。

ポイント

  • Processor
    • SplitText?
      Line Split Count : 2
  • PutFile?
    • PutFile?(Connection 2-1 に接続)
      Directory : ./data-out1
    • PutFile?(Connection 2-2 に接続)
      Directory : ./data-out2
  • Connection
    • [Name] : 2-1
      [Relationship] : original, failure
    • [Name] : 2-2
      [Relationship] : splits

動作確認

  • Processorを選択していない状態でOperatorの再生ボタンを押下する。
  • data-inフォルダに放り込んだファイルがdata-out1, 2フォルダに出力されることを確認できる。
  • data-out1 : data-inに放り込んだファイル
  • data-out2 : SplitText?で抽出した先頭の2行のテキストを含むファイル

分割・集約

SplitContent?MergeContent? Processorを追加、
以下のようなデータフローを定義して分割・集約を評価できる。

データフロー

手順10

ポイント

  • Processor
  • GetFile?
    Directory : ./data-in
  • PutFile?
    • PutFile?(Connection 3-1 に接続)
      Directory : ./data-temp
    • PutFile?(Connection 3-2 に接続)
      Directory : ./data-out
  • 分割・集約
  • 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

動作確認

  • Processorを選択していない状態でOperatorの再生ボタンを押下する。
  • data-inフォルダに放り込んだファイルがdata-temp、data-outフォルダに出力されることを確認できる。
  • data-temp
    • Byte Sequenceで分割されたファイル
    • ファイル名は、UpdateAttribute?により、UUIDに変更される。
  • data-out
    • 分割後、再び集約されたファイル。
    • Byte Sequenceで分割後、マージされるため、Byte Sequenceが削除されている。

変換・処理辺りの利用

前述の、GetFile - PutFile の例CompressContent? Processorを追加して、
以下のようなデータフローを定義して変換・処理を評価できる。

データフロー

手順11

ポイント

Processor

  • GetFile?
    Directory : ./data-in
  • PutFile?
    • PutFile?(Connection 2 に接続)
      Directory : ./data-temp
    • PutFile?(Connection 4 に接続)
      Directory : ./data-out
  • 変換・処理
  • CompressContent?
    • Mode : compress
    • Compression Format : gzip
  • CompressContent?
    • Mode : decompress
    • Compression Format : gzip

Connection

  • [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)で解凍されたデータ・ファイル

その他、基本操作

Processor・Connectionの配置

ヘッダのComponentToolBar?のProcessor・Connectionアイコンを方眼紙風のキャンバスにD&D。

Connection

曲げたい場合

矢印上でダブル・クリックする。

Queueのクリア

  • Terminateしたフローファイルがキューに詰まることがある。
  • この場合、Connectionを右クリックして、Empty Queueする。

Template

セーブ・ロード

  • セーブ
    • OperatorからCreate Templateする。
  • ファイルに出力する場合、
    • 右上メニューからTemplateを選択し、
    • Create TemplateをDownloadする。
  • ロード
    • ファイルから入力する場合、OperatorからUpload Templateする。
    • ヘッダのComponentToolBar?のTemplateアイコンを方眼紙風のキャンバスにD&D。

ProcessGroup?に格納

テンプレートを保存する前に、以下の手順を踏む。

  • ヘッダのComponentToolBar?ProcessGroup?アイコンを方眼紙風のキャンバスにD&D。
  • ProcessGroup?に名称を付与し、ProcessGroup?上に他のProcessor+ConnectionをD&D。

これにより、データフローがProcessGroup?として纏まる。

サーバーの実行

・・・

セカンド・ステップ

参考

参考資料

Apache NiFi - Processor


添付ファイル: file11.png 57件 [詳細] file10.png 69件 [詳細] file9.png 75件 [詳細] file8.png 65件 [詳細] file6.png 62件 [詳細] file7.png 52件 [詳細] file5.png 83件 [詳細] file2-2.png 57件 [詳細] file2-1.png 69件 [詳細] file4.png 54件 [詳細] file3.png 56件 [詳細] file1.png 66件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-07-13 (金) 11:06:01 (432d)