ApacheNiFi-クイックガイド
Apache NiFiは、異種システム間でデータを処理および配布するための強力で使いやすく、信頼性の高いシステムです。これは、NSAによって開発されたNiagara Filesテクノロジーに基づいており、8年後にApache SoftwareFoundationに寄付されました。2004年1月のApacheLicenseバージョン2.0で配布されています。ApacheNiFiの最新バージョンは1.7.1です。
Apache NiFiは、リアルタイムのデータ取り込みプラットフォームであり、さまざまなソースシステムと宛先システム間でデータ転送を転送および管理できます。ログ、地理的位置データ、ソーシャルフィードなど、さまざまなデータ形式をサポートします。また、SFTP、HDFS、KAFKAなどの多くのプロトコルもサポートします。このプラットフォームは、さまざまなデータソースとプロトコルをサポートしているため、多くのIT組織。
ApacheNiFi-一般的な機能
ApacheNiFiの一般的な機能は次のとおりです。
Apache NiFiは、設計、制御、フィードバック、および監視の間のシームレスなエクスペリエンスを提供するWebベースのユーザーインターフェイスを提供します。
高度な設定が可能です。これにより、ユーザーは、配信の保証、低遅延、高スループット、動的な優先順位付け、バックプレッシャー、および実行時のフローの変更を行うことができます。
また、フローの開始から終了までデータを追跡および監視するためのデータ来歴モジュールも提供します。
開発者は、必要に応じて独自のカスタムプロセッサとレポートタスクを作成できます。
NiFiは、SSL、HTTPS、SSH、その他の暗号化などの安全なプロトコルのサポートも提供します。
また、ユーザーと役割の管理をサポートし、承認のためにLDAPを使用して構成することもできます。
ApacheNiFi-重要な概念
ApacheNiFiの重要な概念は次のとおりです-
Process Group −これはNiFiフローのグループであり、ユーザーがフローを階層的に管理および維持するのに役立ちます。
Flow − 1つまたは複数のデータソースから別の宛先データソースに必要に応じてデータを転送および変更するために、異なるプロセッサを接続して作成されます。
Processor−プロセッサは、ソーシングシステムからデータをフェッチするか、デスティネーションシステムにデータを保存することを担当するJavaモジュールです。他のプロセッサも、フローファイルの属性を追加したりコンテンツを変更したりするために使用されます。
Flowfile−これはNiFiの基本的な使用法であり、NiFiのソースシステムから選択されたデータの単一のオブジェクトを表します。NiFiprocessorは、ソースプロセッサからデスティネーションに移動する間にフローファイルに変更を加えます。CREATE、CLONE、RECEIVEなどのさまざまなイベントが、フロー内のさまざまなプロセッサによってフローファイルに対して実行されます。
Event−イベントは、NiFiフローを通過する際のフローファイルの変更を表します。これらのイベントは、データの出所で追跡されます。
Data provenance −リポジトリです。UIもあり、ユーザーはフローファイルに関する情報を確認でき、フローファイルの処理中に問題が発生した場合のトラブルシューティングに役立ちます。
ApacheNiFiの利点
Apache NiFiは、SFTPを使用してリモートマシンからのデータフェッチを可能にし、データ系統を保証します。
Apache NiFiはクラスタリングをサポートしているため、同じフローで異なるデータを処理する複数のノードで機能し、データ処理のパフォーマンスを向上させます。
また、ユーザーレベル、プロセスグループレベル、およびその他のモジュールのセキュリティポリシーも提供します。
そのUIはHTTPSでも実行できるため、ユーザーとNiFiとのやり取りが安全になります。
NiFiは約188のプロセッサをサポートし、ユーザーはさまざまなデータシステムをサポートするカスタムプラグインを作成することもできます。
ApacheNiFiの短所
ユーザーがノードに変更を加えているときにノードがNiFiクラスターから切断されると、flow.xmlは無効になります。管理者が接続されたノードからflow.xmlを手動でコピーしない限り、アノードはクラスターに接続できません。
Apache NiFiには、プライマリノードスイッチの場合に状態の永続性の問題があり、プロセッサがソーシングシステムからデータをフェッチできなくなることがあります。
Apache NiFiは、Webサーバー、フローコントローラー、およびJava仮想マシン上で実行されるプロセッサーで構成されます。次の図に示すように、3つのリポジトリFlowfileリポジトリ、Contentリポジトリ、およびProvenanceリポジトリもあります。
フローファイルリポジトリ
このリポジトリには、apacheNiFiのデータフローを通過するすべてのフローファイルの現在の状態と属性が格納されます。このリポジトリのデフォルトの場所は、apacheNiFiのルートディレクトリです。このリポジトリの場所は、「nifi.flowfile.repository.directory」という名前のプロパティを変更することで変更できます。
コンテンツリポジトリ
このリポジトリには、NiFiのすべてのフローファイルに存在するすべてのコンテンツが含まれています。デフォルトのディレクトリもNiFiのルートディレクトリにあり、「org.apache.nifi.controller.repository.FileSystemRepository」プロパティを使用して変更できます。このディレクトリはディスクに大きなスペースを使用するため、インストールディスクに十分なスペースを確保することをお勧めします。
来歴リポジトリ
リポジトリは、NiFiを流れるすべてのフローファイルのすべてのイベントを追跡および保存します。2つの来歴リポジトリがあります-volatile provenance repository (このリポジトリでは、再起動後にすべての来歴データが失われます)および persistent provenance repository。デフォルトのディレクトリもNiFiのルートディレクトリにあり、それぞれのリポジトリの「org.apache.nifi.provenance.PersistentProvenanceRepository」および「org.apache.nifi.provenance.VolatileProvenanceRepositor」プロパティを使用して変更できます。
この章では、ApacheNiFiの環境設定について学習します。ApacheNiFiをインストールする手順は次のとおりです。
Step 1−現在のバージョンのJavaをコンピュータにインストールします。お使いのマシンにJAVA_HOMEを設定してください。以下に示すようにバージョンを確認できます。
Windowsオペレーティングシステム(OS)の場合(コマンドプロンプトを使用)-
> java -version
UNIX OSの場合(ターミナルを使用):
$ echo $JAVA_HOME
Step 2 − DownloadApacheNiFiから https://nifi.apache.org/download.html
WindowsOSの場合はZIPファイルをダウンロードします。
UNIXOSの場合TARファイルをダウンロードします。
Dockerイメージについては、次のリンクにアクセスしてください https://hub.docker.com/r/apache/nifi/.
Step 3− ApacheNiFiのインストールプロセスは非常に簡単です。プロセスはOSによって異なります-
Windows OS − zipパッケージを解凍すると、ApacheNiFiがインストールされます。
UNIX OS − tarファイルを任意の場所に抽出すると、Logstashがインストールされます。
$tar -xvf nifi-1.6.0-bin.tar.gz
Step 4−コマンドプロンプトを開き、NiFiのbinディレクトリに移動します。たとえば、C:\ nifi-1.7.1 \ binとし、run-nifi.batファイルを実行します。
C:\nifi-1.7.1\bin>run-nifi.bat
Step 5− NiFiUIが起動するまでに数分かかります。ユーザーはnifi-app.logを確認できます。NiFiUIが起動すると、ユーザーは次のように入力できます。http://localhost:8080/nifi/ UIにアクセスします。
Apacheは、ユーザーがWebUIを使用してアクセスできるWebベースのプラットフォームです。NiFi UIは非常にインタラクティブで、NiFiに関するさまざまな情報を提供します。下の画像に示すように、ユーザーは次の属性に関する情報にアクセスできます-
- アクティブなスレッド
- キューに入れられたデータの合計
- リモートプロセスグループの送信
- リモートプロセスグループを送信しない
- 実行中のコンポーネント
- 停止したコンポーネント
- 無効なコンポーネント
- 無効なコンポーネント
- 最新のバージョン管理されたプロセスグループ
- ローカルで変更されたバージョン管理されたプロセスグループ
- 古いバージョン管理されたプロセスグループ
- ローカルで変更され、古いバージョンのプロセスグループ
- 同期の失敗バージョン管理されたプロセスグループ
ApacheNiFiのコンポーネント
Apache NiFiUIには次のコンポーネントがあります-
プロセッサー
ユーザーは、キャンバス上のプロセスアイコンをドラッグして、NiFiのデータフローに必要なプロセッサを選択できます。
入力ポート
下のアイコンをキャンバスにドラッグして、入力ポートを任意のデータフローに追加します。
入力ポートは、そのプロセスグループに存在しないプロセッサからデータを取得するために使用されます。
このアイコンをドラッグした後、NiFiは入力ポートの名前を入力するように要求し、それがNiFiキャンバスに追加されます。
出力ポート
以下のアイコンをキャンバスにドラッグして、出力ポートを任意のデータフローに追加します。
出力ポートは、そのプロセスグループに存在しないプロセッサにデータを転送するために使用されます。
このアイコンをドラッグすると、NiFiは出力ポートの名前を入力するように要求し、それがNiFiキャンバスに追加されます。
プロセスグループ
ユーザーは下のアイコンを使用して、NiFiキャンバスにプロセスグループを追加します。
このアイコンをドラッグすると、NiFiはプロセスグループの名前を入力するように要求し、それがNiFiキャンバスに追加されます。
リモートプロセスグループ
これは、NiFiキャンバスにリモートプロセスグループを追加するために使用されます。
漏斗
ファンネルは、プロセッサの出力を複数のプロセッサに転送するために使用されます。ユーザーは、以下のアイコンを使用して、NiFiデータフローに目標到達プロセスを追加できます。
テンプレート
このアイコンは、データフローテンプレートをNiFiキャンバスに追加するために使用されます。これは、同じまたは異なるNiFiインスタンスでデータフローを再利用するのに役立ちます。
ドラッグした後、ユーザーはNiFiにすでに追加されているテンプレートを選択できます。
ラベル
これらは、NiFiに存在するコンポーネントに関するテキストをNiFiキャンバスに追加するために使用されます。美的感覚を追加するためにユーザーが使用するさまざまな色を提供します。
Apache NiFiプロセッサは、データフローを作成するための基本的なブロックです。プロセッサごとに異なる機能があり、出力フローファイルの作成に貢献します。次の画像に示すデータフローは、GetFileプロセッサを使用して1つのディレクトリからファイルをフェッチし、PutFileプロセッサを使用して別のディレクトリに保存しています。
GetFile
GetFileプロセスは、特定のディレクトリから特定の形式のファイルをフェッチするために使用されます。また、フェッチをより細かく制御するためのその他のオプションもユーザーに提供します。これについては、以下のプロパティセクションで説明します。
GetFile設定
以下は、GetFileプロセッサのさまざまな設定です-
名前
[名前]設定では、ユーザーはプロジェクトに応じて、またはプロジェクトごとにプロセッサの任意の名前を定義できます。これにより、名前がより意味のあるものになります。
有効にする
ユーザーは、この設定を使用してプロセッサを有効または無効にできます。
ペナルティ期間
この設定により、フローファイルに障害が発生した場合に、ユーザーはペナルティ期間を追加できます。
利回りデュレーション
この設定は、プロセッサの歩留まり時間を指定するために使用されます。この期間中、プロセスは再度スケジュールされません。
速報レベル
この設定は、そのプロセッサのログレベルを指定するために使用されます。
関係を自動的に終了する
これには、その特定のプロセスで利用可能なすべての関係のチェックのリストがあります。チェックボックスをオンにすることで、ユーザーはプロセッサをプログラムして、そのイベントでフローファイルを終了し、フロー内でそれ以上送信しないようにすることができます。
GetFileスケジューリング
これらは、GetFileプロセッサによって提供される次のスケジューリングオプションです-
スケジュール戦略
時間駆動を選択して時間ベースでプロセスをスケジュールするか、CRONドライバーオプションを選択して指定したCRON文字列をスケジュールできます。
並行タスク
このオプションは、このプロセッサーの並行タスクスケジュールを定義するために使用されます。
実行
ユーザーは、このオプションを使用して、プロセッサをすべてのノードで実行するか、プライマリノードでのみ実行するかを定義できます。
実行スケジュール
これは、時間駆動型戦略の時間、またはCRON駆動型戦略のCRON式を定義するために使用されます。
GetFileプロパティ
GetFileは、下の画像に示すように、入力ディレクトリやファイルフィルターなどの強制的なプロパティから、パスフィルターや最大ファイルサイズなどのオプションのプロパティまで、複数のプロパティを提供します。ユーザーは、これらのプロパティを使用してファイルフェッチプロセスを管理できます。
GetFileコメント
このセクションは、プロセッサに関する情報を指定するために使用されます。
PutFile
PutFileプロセッサは、データフローから特定の場所にファイルを保存するために使用されます。
PutFile設定
PutFileプロセッサには次の設定があります-
名前
[名前]設定では、ユーザーは、プロジェクトに従って、または名前をより意味のあるものにする名前によって、プロセッサの任意の名前を定義できます。
有効にする
ユーザーは、この設定を使用してプロセッサを有効または無効にできます。
ペナルティ期間
この設定により、フローファイルに障害が発生した場合に、ユーザーはペナルティ期間を追加できます。
利回りデュレーション
この設定は、プロセッサの歩留まり時間を指定するために使用されます。この期間中、プロセスは再度スケジュールされません。
速報レベル
この設定は、そのプロセッサのログレベルを指定するために使用されます。
関係を自動的に終了する
この設定には、その特定のプロセスで使用可能なすべての関係のチェックのリストがあります。チェックボックスをオンにすることで、ユーザーはプロセッサをプログラムして、そのイベントでフローファイルを終了し、フロー内でそれ以上送信しないようにすることができます。
PutFileのスケジューリング
これらは、PutFileプロセッサによって提供される次のスケジューリングオプションです-
スケジュール戦略
タイマー駆動を選択するか、CRONドライバーオプションを選択して指定したCRON文字列を選択することにより、時間ベースでプロセスをスケジュールできます。特定のイベントでプロセッサをトリガーする実験戦略イベント駆動型もあります。
並行タスク
このオプションは、このプロセッサーの並行タスクスケジュールを定義するために使用されます。
実行
ユーザーは、このオプションを使用して、プロセッサをすべてのノードで実行するか、プライマリノードでのみ実行するかを定義できます。
実行スケジュール
これは、タイマー駆動型ストラテジーの時間、またはCRON駆動型ストラテジーのCRON式を定義するために使用されます。
PutFileのプロパティ
次の画像に示すように、PutFileプロセッサには、ファイル転送を目的とした出力ディレクトリを指定するDirectoryや、転送を管理するその他のプロパティなどのプロパティが用意されています。
PutFileコメント
このセクションは、プロセッサに関する情報を指定するために使用されます。
この章では、ApacheNiFiでのプロセスの分類について説明します。
データ取り込みプロセッサ
データ取り込みカテゴリのプロセッサは、NiFiデータフローにデータを取り込むために使用されます。これらは主に、apacheNiFiのデータフローの開始点です。これらのカテゴリに属するプロセッサには、GetFile、GetHTTP、GetFTP、GetKAFKAなどがあります。
ルーティングおよびメディエーションプロセッサ
ルーティングおよびメディエーションプロセッサは、フローファイルの属性またはコンテンツの情報に従って、フローファイルをさまざまなプロセッサまたはデータフローにルーティングするために使用されます。これらのプロセッサは、NiFiデータフローの制御も担当します。このカテゴリに属するプロセッサには、RouteOnAttribute、RouteOnContent、ControlRate、RouteTextなどがあります。
データベースアクセスプロセッサ
このデータベースアクセスカテゴリのプロセッサは、データを選択または挿入したり、データベースから他のSQLステートメントを実行および準備したりすることができます。これらのプロセッサは、主にApacheNiFiのデータ接続プールコントローラ設定を使用します。このカテゴリに属するプロセッサには、ExecuteSQL、PutSQL、PutDatabaseRecord、ListDatabaseTablesなどがあります。
属性抽出プロセッサ
属性抽出プロセッサは、NiFiデータフローでのフローファイル属性処理の抽出、分析、変更を担当します。このカテゴリに属するプロセッサには、UpdateAttribute、EvaluateJSONPath、ExtractText、AttributesToJSONなどがあります。
システム相互作用プロセッサ
システムインタラクションプロセッサは、任意のオペレーティングシステムでプロセスまたはコマンドを実行するために使用されます。これらのプロセッサは、さまざまなシステムと対話するために、多くの言語でスクリプトを実行します。このカテゴリに属するプロセッサには、ExecuteScript、ExecuteProcess、ExecuteGroovyScript、ExecuteStreamCommandなどがあります。
データ変換プロセッサ
データ変換に属するプロセッサは、フローファイルのコンテンツを変更できます。これらは、ユーザーがHTTPプロセッサを呼び出すためにHTTPボディとしてフローファイルを送信する必要がある場合に通常使用されるフローファイルのデータを完全に置き換えるために使用できます。このカテゴリに属するプロセッサには、ReplaceText、JoltTransformJSONなどがあります。
データプロセッサの送信
送信データプロセッサは、通常、データフローのエンドプロセッサです。これらのプロセッサは、データを保存するか、宛先サーバーに送信する責任があります。データの保存または送信に成功した後、これらのプロセッサは成功の関係でフローファイルをドロップします。このカテゴリに属するプロセッサには、PutEmail、PutKafka、PutSFTP、PutFile、PutFTPなどがあります。
分割および集約プロセッサ
これらのプロセッサは、フローファイルに存在するコンテンツを分割およびマージするために使用されます。このカテゴリに属するプロセッサには、SplitText、SplitJson、SplitXml、MergeContent、SplitContentなどがあります。
HTTPプロセッサ
これらのプロセッサは、HTTPおよびHTTPS呼び出しを処理します。このカテゴリに属するプロセッサには、InvokeHTTP、PostHTTP、ListenHTTPなどがあります。
AWSプロセッサ
AWSプロセッサは、アマゾンウェブサービスシステムとの相互作用に責任があります。このカテゴリに属するプロセッサには、GetSQS、PutSNS、PutS3Object、FetchS3Objectなどがあります。
Apache NiFiデータフローでは、フローファイルは、プロセッサ間の関係を使用して検証される接続を介して、あるプロセッサから別のプロセッサに移動します。接続が作成されるたびに、開発者はそれらのプロセッサ間の1つ以上の関係を選択します。
上の画像でわかるように、黒い長方形のチェックボックスは関係です。開発者がこれらのチェックボックスを選択すると、関係が成功または失敗、あるいはその両方である場合、フローファイルはその特定のプロセッサで終了します。
成功
プロセッサが、接続、認証、またはその他のエラーを取得せずに、データソースからデータを保存またはフェッチするなどのフローファイルを正常に処理すると、フローファイルは成功関係になります。
失敗
認証エラーや接続の問題などのエラーなしにプロセッサがフローファイルを処理できない場合、フローファイルは障害関係になります。
開発者は、接続を使用してフローファイルを他のプロセッサに転送することもできます。開発者はそれを選択して負荷分散することもできますが、負荷分散はバージョン1.8でリリースされたばかりであり、このチュートリアルでは取り上げません。
上の画像でわかるように、赤でマークされた接続には障害の関係があります。つまり、エラーのあるすべてのフローファイルは左側のプロセッサに送られ、エラーのないすべてのフローファイルは緑でマークされた接続に転送されます。
それでは、他の関係を進めましょう。
comms.failure
この関係は、通信障害のためにフローファイルをリモートサーバーからフェッチできなかった場合に満たされます。
見つかりません
リモートサーバーから「見つかりません」というメッセージを受け取ったフローファイルは、次の場所に移動します。 not.found 関係。
アクセス拒否
権限が不十分なためにNiFiがリモートサーバーからフローファイルをフェッチできない場合、NiFiはこの関係を移動します。
フローファイルは、ApacheNiFiの基本的な処理エンティティです。これには、NiFiプロセッサがデータを処理するために使用するデータの内容と属性が含まれています。ファイルの内容には通常、ソースシステムからフェッチされたデータが含まれています。Apache NiFiFlowFileの最も一般的な属性は次のとおりです。
UUID
これはUniversallyUnique Identifierの略で、NiFiによって生成されたフローファイルの一意のIDです。
ファイル名
この属性には、そのフローファイルのファイル名が含まれ、ディレクトリ構造は含まれていません。
ファイルサイズ
これには、Apache NiFiFlowFileのサイズが含まれています。
mime.type
このFlowFileのMIMEタイプを指定します。
道
この属性には、フローファイルが属するファイルの相対パスが含まれ、ファイル名は含まれません。
Apache NiFiデータフロー接続には、大量のデータ流入を処理するためのキューイングシステムがあります。これらのキューは、非常に大量のFlowFileを処理して、プロセッサがそれらをシリアルに処理できるようにすることができます。
上の画像のキューには、成功関係を通じて転送された1つのフローファイルがあります。ユーザーは、を選択してフローファイルを確認できます。List queueドロップダウンリストのオプション。過負荷またはエラーが発生した場合、ユーザーはを選択してキューをクリアすることもできます。empty queue オプションを選択すると、ユーザーはフローを再開して、データフローでそれらのファイルを再度取得できます。
キュー内のフローファイルのリストは、位置、UUID、ファイル名、ファイルサイズ、キュー期間、および系統期間で構成されます。ユーザーは、フローファイルリストの最初の列にある情報アイコンをクリックすると、フローファイルのすべての属性とコンテンツを表示できます。
Apache NiFiでは、ユーザーはさまざまなプロセスグループでさまざまなデータフローを維持できます。これらのグループは、ApacheNiFiインスタンスがサポートするさまざまなプロジェクトまたは組織に基づくことができます。
上の図に示すように、NiFi UIの上部にあるメニューの4番目の記号は、NiFiキャンバスにプロセスグループを追加するために使用されます。「Tutorialspoint.com_ProcessGroup」という名前のプロセスグループには、上の図に示すように、現在停止段階にある4つのプロセッサを含むデータフローが含まれています。プロセスグループを階層的に作成して、データフローをより適切な構造で管理できます。これは理解しやすいものです。
NiFi UIのフッターで、プロセスグループを確認し、ユーザーが現在存在しているプロセスグループの先頭に戻ることができます。
NiFiに存在するプロセスグループの完全なリストを表示するには、ユーザーはNiFiUIの左上にあるメニューを使用して概要に移動できます。要約すると、次の図に示すように、すべてのプロセスグループがバージョン状態、転送済み/サイズ、入力/サイズ、読み取り/書き込み、出力/サイズなどのパラメーターとともに一覧表示される[プロセスグループ]タブがあります。
Apache NiFiは、開発者がNiFIキャンバスに存在するコンポーネントに関する情報を書き込むことができるようにするラベルを提供します。NiFi UIのトップメニューの左端のアイコンは、NiFiキャンバスにラベルを追加するために使用されます。
開発者は、ラベルを右クリックしてメニューから適切なオプションを選択することで、ラベルの色とテキストのサイズを変更できます。
Apache NiFiは、高度に構成可能なプラットフォームです。confディレクトリのnifi.propertiesファイル
ほとんどの構成が含まれています。
ApacheNiFiの一般的に使用されるプロパティは次のとおりです。
コアプロパティ
このセクションには、NiFiインスタンスを実行するために必須のプロパティが含まれています。
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.flow.configuration.file | ./conf/flow.xml.gz | このプロパティには、flow.xmlファイルへのパスが含まれています。このファイルには、NiFiで作成されたすべてのデータフローが含まれています。 |
2 | nifi.flow.configuration.archive.enabled | true | このプロパティは、NiFiでのアーカイブを有効または無効にするために使用されます。 |
3 | nifi.flow.configuration.archive.dir | ./conf/archive/ | このプロパティは、アーカイブディレクトリを指定するために使用されます。 |
4 | nifi.flow.configuration.archive.max.time | 30日 | これは、コンテンツをアーカイブするための保持時間を指定するために使用されます。 |
5 | nifi.flow.configuration.archive.max.storage | 500 MB | これには、拡張できるアーカイブディレクトリの最大サイズが含まれています。 |
6 | nifi.authorizer.configuration.file | ./conf/authorizers.xml | ユーザー認証に使用される認証者構成ファイルを指定します。 |
7 | nifi.login.identity.provider.configuration.file | ./conf/login-identity-providers.xml | このプロパティには、ログインIDプロバイダーの構成が含まれています。 |
8 | nifi.templates.directory | ./conf/templates | このプロパティは、NiFiテンプレートが保存されるディレクトリを指定するために使用されます。 |
9 | nifi.nar.library.directory | ./lib | このプロパティには、ライブラリへのパスが含まれています。このパスは、NiFiがこのlibフォルダーにあるNARファイルを使用してすべてのコンポーネントをロードするために使用します。 |
10 | nifi.nar.working.directory | ./work/nar/ | NiFiがファイルを処理すると、このディレクトリには解凍されたnarファイルが保存されます。 |
11 | nifi.documentation.working.directory | ./work/docs/components | このディレクトリには、すべてのコンポーネントのドキュメントが含まれています。 |
状態管理
これらのプロパティは、処理の開始に役立つコンポーネントの状態を保存するために使用されます。コンポーネントは、再起動後、次のスケジュールの実行時に残ります。
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.state.management.configuration.file | ./conf/state-management.xml | このプロパティには、state-management.xmlファイルへのパスが含まれています。このファイルには、そのNiFiインスタンスのデータフローに存在するすべてのコンポーネントの状態が含まれています。 |
2 | nifi.state.management.provider.local | ローカルプロバイダー | これには、ローカル状態プロバイダーのIDが含まれています。 |
3 | nifi.state.management.provider.cluster | zk-プロバイダー | このプロパティには、クラスター全体の状態プロバイダーのIDが含まれます。NiFiがクラスター化されていない場合、これは無視されますが、クラスターで実行している場合はデータを入力する必要があります。 |
4 | nifi.state.management。埋め込み。動物園の飼育係。開始 | false | このプロパティは、NiFiのこのインスタンスが組み込みのZooKeeperサーバーを実行するかどうかを指定します。 |
5 | nifi.state.management。埋め込み。zookeeper.properties | ./conf/zookeeper.properties | このプロパティには、<nifi.state.managementの場合に使用するZooKeeperプロパティを提供するプロパティファイルのパスが含まれています。埋め込み。動物園の飼育係。start>はtrueに設定されます。 |
FlowFileリポジトリ
FlowFileリポジトリの重要な詳細を見てみましょう-
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.flowfile.repository。実装 | org.apache.nifi。コントローラ。リポジトリ。先行書き込みFlowFileRepository | このプロパティは、フローファイルをメモリまたはディスクに保存するかどうかを指定するために使用されます。ユーザーがフローファイルをメモリに保存する場合は、「org.apache.nifi.controller.repository.VolatileFlowFileRepository」に変更します。 |
2 | nifi.flowfile.repository.directory | ./flowfile_repository | フローファイルリポジトリのディレクトリを指定します。 |
Apache NiFiは、管理目的でambari、zookeeperなどの複数のツールをサポートします。NiFiは、管理者向けにHTTPSなどを設定するための構成をnifi.propertiesファイルに提供します。
動物園の飼育係
NiFi自体は、クラスター内の投票プロセスを処理しません。これは、クラスターが作成されると、すべてのノードがプライマリおよびコーディネーターになることを意味します。そのため、飼育係はプライマリノードとコーディネーターの投票を管理するように構成されています。nifi.propertiesファイルには、zookeeperをセットアップするためのいくつかのプロパティが含まれています。
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.state.management.embedded.zookeeper。プロパティ | ./conf/zookeeper.properties | zookeeperプロパティファイルのパスと名前を指定します。 |
2 | nifi.zookeeper.connect.string | 空の | zookeeperの接続文字列を指定します。 |
3 | nifi.zookeeper.connect.timeout | 3秒 | NiFiとのzookeeperの接続タイムアウトを指定します。 |
4 | nifi.zookeeper.session.timeout | 3秒 | NiFiでzookeeperのセッションタイムアウトを指定します。 |
5 | nifi.zookeeper.root.node | / nifi | 動物園の飼育係のルートノードを指定します。 |
6 | nifi.zookeeper.auth.type | 空の | 動物園の飼育係の認証タイプを指定します。 |
HTTPSを有効にする
NiFi over HTTPSを使用するには、管理者はキーストアとトラストストアを生成し、nifi.propertiesファイルにいくつかのプロパティを設定する必要があります。TLSツールキットを使用して、apacheNiFiでHTTPSを有効にするために必要なすべてのキーを生成できます。
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.web.https.port | 空の | httpsポート番号を指定します。 |
2 | nifi.web.https.network.interface.default | 空の | NiFiのhttpsのデフォルトインターフェイス。 |
3 | nifi.security.keystore | 空の | キーストアのパスとファイル名を指定します。 |
4 | nifi.security.keystoreType | 空の | JKSなどのキーストアタイプのタイプを指定します。 |
5 | nifi.security.keystorePasswd | 空の | キーストアのパスワードを指定します。 |
6 | nifi.security.truststore | 空の | トラストストアのパスとファイル名を指定します。 |
7 | nifi.security.truststoreType | 空の | JKSのようなトラストストアタイプのタイプを指定します。 |
8 | nifi.security.truststorePasswd | 空の | トラストストアのパスワードを指定します。 |
管理のための他のプロパティ
管理者がNiFiを管理し、そのサービスを継続するために使用するプロパティは他にもいくつかあります。
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.flowcontroller.graceful.shutdown.period | 10秒 | NiFiフローコントローラーを正常にシャットダウンする時間を指定します。 |
2 | nifi.administrative.yield.duration | 30秒 | NiFiの管理上の歩留まり期間を指定します。 |
3 | nifi.authorizer.configuration.file | ./conf/authorizers.xml | 承認者構成ファイルのパスとファイル名を指定します。 |
4 | nifi.login.identity.provider.configuration.file | ./conf/login-identity-providers.xml | ログインIDプロバイダー構成ファイルのパスとファイル名を指定します。 |
Apache NiFiは、開発者があらゆるタイプのプロトコルまたはデータソースのデータフローを作成するのに役立つ多数のコンポーネントを提供します。フローを作成するには、開発者はコンポーネントをメニューバーからキャンバスにドラッグし、マウスをクリックして1つのコンポーネントから別のコンポーネントにドラッグすることでコンポーネントを接続します。
一般に、NiFiには、ソースシステムからデータを取得するgetfileのようなフローの開始時にリスナーコンポーネントがあります。もう一方の端にはputfileのような送信機コンポーネントがあり、その間にデータを処理するコンポーネントがあります。
たとえば、あるディレクトリから空のファイルを取得し、そのファイルにテキストを追加して別のディレクトリに配置するフローを作成しましょう。
まず、プロセッサアイコンをNiFiキャンバスにドラッグし、リストからGetFileプロセッサを選択します。
次のような入力ディレクトリを作成します c:\inputdir.
プロセッサを右クリックして[設定]を選択し、[プロパティ]タブで[追加]を選択します Input Directory (c:\inputdir) [適用]をクリックして、キャンバスに戻ります。
プロセッサアイコンをキャンバスにドラッグし、リストからReplaceTextプロセッサを選択します。
プロセッサを右クリックして、設定を選択します。の中にproperties タブ、次のようなテキストを追加します “Hello tutorialspoint.com” [置換値]のテキストボックスで、[適用]をクリックします。
[設定]タブに移動し、右側の[失敗]チェックボックスをオンにしてから、キャンバスに戻ります。
成功の関係でGetFIleプロセッサをReplaceTextに接続します。
プロセッサアイコンをキャンバスにドラッグし、リストからPutFileプロセッサを選択します。
次のような出力ディレクトリを作成します c:\outputdir。
プロセッサを右クリックして、設定を選択します。[プロパティ]タブで、Directory (c:\outputdir) [適用]をクリックして、キャンバスに戻ります。
[設定]タブに移動し、右側にある[失敗と成功]チェックボックスをオンにしてから、キャンバスに戻ります。
成功の関係で、ReplaceTextプロセッサをPutFileに接続します。
フローを開始し、入力ディレクトリに空のファイルを追加すると、出力ディレクトリに移動し、テキストがファイルに追加されます。
上記の手順に従うことで、開発者は任意のプロセッサやその他のNiFiコンポーネントを選択して、組織やクライアントに適したフローを作成できます。
Apache NiFiは、テンプレートの概念を提供します。これにより、NiFiフローの再利用と配布が容易になります。フローは、他の開発者または他のNiFiクラスターで使用できます。また、NiFi開発者がGitHubなどのリポジトリで作業を共有するのにも役立ちます。
テンプレートを作成する
第15章「ApacheNiFi-フローの作成」で作成したフローのテンプレートを作成しましょう。
Shiftキーを使用してフローのすべてのコンポーネントを選択し、NiFiキャンバスの左側にあるテンプレートの作成アイコンをクリックします。上の画像に示すようなツールボックスも表示されます。アイコンをクリックしますcreate template上の写真のように青でマークされています。テンプレートの名前を入力します。開発者は、オプションの説明を追加することもできます。
テンプレートをダウンロード
次に、下の図に示すように、NiFiUIの右上隅にあるメニューの[NiFiテンプレート]オプションに移動します。
次に、ダウンロードするテンプレートのダウンロードアイコン(リストの右側にあります)をクリックします。テンプレート名のXMLファイルがダウンロードされます。
テンプレートをアップロード
NiFiでテンプレートを使用するには、開発者はUIを使用してxmlファイルをNiFiにアップロードする必要があります。[テンプレートの作成]アイコンの横に[テンプレートのアップロード]アイコン(下の画像で青色でマーク)があり、それをクリックしてxmlを参照します。
テンプレートを追加
NiFi UIの上部のツールバーでは、テンプレートアイコンはラベルアイコンの前にあります。下の図に示すように、アイコンは青色でマークされています。
テンプレートアイコンをドラッグし、ドロップダウンリストからテンプレートを選択して[追加]をクリックします。テンプレートをNiFiキャンバスに追加します。
NiFiは多数のAPIを提供し、開発者が変更を加えたり、他のツールやカスタム開発されたアプリケーションからNiFiの情報を取得したりするのに役立ちます。このチュートリアルでは、GoogleChromeのpostmanアプリを使用していくつかの例を説明します。
Google Chromeにポストマンを追加するには、下記のURLにアクセスし、[Chromeに追加]ボタンをクリックします。これで、GoogleChromeに新しいアプリが追加されました。
Chromeウェブストア
NiFi Rest APIの現在のバージョンは1.8.0であり、ドキュメントは下記のURLにあります。
https://nifi.apache.org/docs/nifi-docs/rest-api/index.html
以下は、最も使用されているNiFi RestAPIモジュールです-
http:// <nifi url>:<nifiポート> / nifi-api / <api-path>>
HTTPSが有効になっている場合https:// <nifi url>:<nifi port> / nifi-api / <api-path>>
S.No. | APIモジュール名 | api-path | 説明 |
---|---|---|---|
1 | アクセス | /アクセス | ユーザーを認証し、NiFiからアクセストークンを取得します。 |
2 | コントローラ | /コントローラ | クラスターを管理し、レポートタスクを作成します。 |
3 | コントローラーサービス | / controller-services | これは、コントローラーサービスを管理し、コントローラーサービス参照を更新するために使用されます。 |
4 | レポートタスク | / Reporting-tasks | レポートタスクを管理するため。 |
5 | フロー | /フロー | データフローメタデータとコンポーネントのステータスおよびクエリ履歴を取得するには |
6 | プロセスグループ | / process-groups | テンプレートをアップロードしてインスタンス化し、コンポーネントを作成します。 |
7 | プロセッサー | / processors | プロセッサを作成およびスケジュールし、そのプロパティを設定します。 |
8 | 接続 | / connections | 接続を作成するには、キューの優先度を設定し、接続先を更新します |
9 | FlowFileキュー | / flowfile-キュー | キューの内容を表示するには、フローファイルの内容をダウンロードし、キューを空にします。 |
10 | リモートプロセスグループ | / remote-process-groups | リモートグループを作成し、送信を有効にします。 |
11 | 来歴 | /来歴 | 来歴を照会し、イベント系統を検索します。 |
ここで、例を検討し、postmanで実行して、実行中のNiFiインスタンスの詳細を取得しましょう。
リクエスト
GET http://localhost:8080/nifi-api/flow/about
応答
{
"about": {
"title": "NiFi",
"version": "1.7.1",
"uri": "http://localhost:8080/nifi-api/",
"contentViewerUrl": "../nifi-content-viewer/",
"timezone": "SGT",
"buildTag": "nifi-1.7.1-RC1",
"buildTimestamp": "07/12/2018 12:54:43 SGT"
}
}
Apache NiFiは、フロー内の取り込まれたデータで発生したイベントに関するすべての情報をログに記録して保存します。データ来歴リポジトリはこの情報を保存し、このイベント情報を検索するためのUIを提供します。データの出所は、完全なNiFiレベルとプロセッサレベルでもアクセスできます。
次の表に、NiFiデータ来歴イベントリストのさまざまなフィールドを示します。次のフィールドがあります-
S.No. | フィールド名 | 説明 |
---|---|---|
1 | 日付時刻 | イベントの日時。 |
2 | タイプ | 'CREATE'のようなイベントのタイプ。 |
3 | FlowFileUuid | イベントが実行されるフローファイルのUUID。 |
4 | サイズ | フローファイルのサイズ。 |
5 | コンポーネント名 | イベントを実行したコンポーネントの名前。 |
6 | コンポーネントタイプ | コンポーネントのタイプ。 |
7 | 血統を表示する | 最後の列には、下の画像に示すようにフローファイルの系統を表示するために使用される系統表示アイコンがあります。 |
イベントの詳細を取得するには、ユーザーはNiFi Data ProvenanceUIの最初の列にある情報アイコンをクリックします。
nifi.propertiesファイルには、NiFi DataProvenanceリポジトリを管理するために使用されるいくつかのプロパティがあります。
S.No. | プロパティ名 | デフォルト値 | 説明 |
---|---|---|---|
1 | nifi.provenance.repository.directory.default | ./provenance_repository | NiFiデータ出所のデフォルトパスを指定します。 |
2 | nifi.provenance.repository.max.storage.time | 24時間 | NiFiデータの出所の最大保持時間を指定します。 |
3 | nifi.provenance.repository.max.storage.size | 1 GB | NiFiデータの出所の最大ストレージを指定します。 |
4 | nifi.provenance.repository.rollover.time | 30秒 | NiFiデータ出所のロールオーバー時間を指定します。 |
5 | nifi.provenance.repository.rollover.size | 100 MB | NiFiデータ出所のロールオーバーサイズを指定します。 |
6 | nifi.provenance.repository.indexed.fields | EventType、FlowFileUUID、Filename、ProcessorID、Relationship | NiFiデータの出所の検索とインデックス作成に使用されるフィールドを指定します。 |
Apache NiFiでは、エラー、メモリ使用量、CPU使用率、データフロー統計など、システムのさまざまな統計を監視する方法が複数あります。このチュートリアルでは、最も一般的な方法について説明します。
組み込みの監視
このセクションでは、ApacheNiFiの組み込み監視について詳しく学習します。
掲示板
掲示板には、NiFiプロセッサによって生成される最新のエラーと警告がリアルタイムで表示されます。掲示板にアクセスするには、ユーザーは右側のドロップダウンメニューに移動して[掲示板]オプションを選択する必要があります。自動的に更新され、ユーザーは無効にすることもできます。ユーザーは、エラーをダブルクリックして実際のプロセッサに移動することもできます。ユーザーは、次の方法でセキュリティ情報をフィルタリングすることもできます。
- メッセージで
- 名前で
- ID別
- グループID別
データ来歴UI
特定のプロセッサまたはNiFi全体で発生するイベントを監視するために、ユーザーは掲示板と同じメニューからデータの出所にアクセスできます。ユーザーは、次のフィールドを使用して、データ来歴リポジトリ内のイベントをフィルタリングすることもできます。
- コンポーネント名別
- コンポーネントタイプ別
- タイプ別
NiFiサマリーUI
Apache NiFiの概要には、掲示板と同じメニューからアクセスすることもできます。このUIには、その特定のNiFiインスタンスまたはクラスターのすべてのコンポーネントに関する情報が含まれています。それらは、名前、タイプ、またはURIでフィルタリングできます。コンポーネントタイプごとに異なるタブがあります。以下は、NiFiサマリーUIで監視できるコンポーネントです。
- Processors
- 入力ポート
- 出力ポート
- リモートプロセスグループ
- Connections
- プロセスグループ
このUIでは、右下にシステム診断という名前のリンクがあり、JVM統計を確認できます。
レポートタスク
Apache NiFiは、Ambari、Grafanaなどの外部監視システムをサポートする複数のレポートタスクを提供します。開発者は、カスタムレポートタスクを作成するか、NiFiのメトリックを外部監視システムに送信するように組み込みのレポートタスクを構成できます。次の表に、NiFi1.7.1が提供するレポートタスクを示します。
S.No. | レポートタスク名 | 説明 |
---|---|---|
1 | AmbariReportingTask | NiFi用のAmbariMetricsServiceをセットアップします。 |
2 | ControllerStatusReportingTask | 過去5分間のNiFiサマリーUIからの情報を報告します。 |
3 | MonitorDiskUsage | 特定のディレクトリのディスク使用量について報告および警告するため。 |
4 | MonitorMemory | JVMのJavaメモリプールで使用されるJavaヒープの量を監視します。 |
5 | SiteToSiteBulletinReportingTask | サイト間プロトコルを使用して、セキュリティ情報のエラーと警告を報告します。 |
6 | SiteToSiteProvenanceReportingTask | サイト間プロトコルを使用してNiFiデータ来歴イベントを報告します。 |
NiFi API
システム診断という名前のAPIがあり、カスタム開発されたアプリケーションでNiFI統計を監視するために使用できます。postmanでAPIを確認しましょう。
リクエスト
http://localhost:8080/nifi-api/system-diagnostics
応答
{
"systemDiagnostics": {
"aggregateSnapshot": {
"totalNonHeap": "183.89 MB",
"totalNonHeapBytes": 192819200,
"usedNonHeap": "173.47 MB",
"usedNonHeapBytes": 181894560,
"freeNonHeap": "10.42 MB",
"freeNonHeapBytes": 10924640,
"maxNonHeap": "-1 bytes",
"maxNonHeapBytes": -1,
"totalHeap": "512 MB",
"totalHeapBytes": 536870912,
"usedHeap": "273.37 MB",
"usedHeapBytes": 286652264,
"freeHeap": "238.63 MB",
"freeHeapBytes": 250218648,
"maxHeap": "512 MB",
"maxHeapBytes": 536870912,
"heapUtilization": "53.0%",
"availableProcessors": 4,
"processorLoadAverage": -1,
"totalThreads": 71,
"daemonThreads": 31,
"uptime": "17:30:35.277",
"flowFileRepositoryStorageUsage": {
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
},
"contentRepositoryStorageUsage": [
{
"identifier": "default",
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
}
],
"provenanceRepositoryStorageUsage": [
{
"identifier": "default",
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
}
],
"garbageCollection": [
{
"name": "G1 Young Generation",
"collectionCount": 344,
"collectionTime": "00:00:06.239",
"collectionMillis": 6239
},
{
"name": "G1 Old Generation",
"collectionCount": 0,
"collectionTime": "00:00:00.000",
"collectionMillis": 0
}
],
"statsLastRefreshed": "09:30:20 SGT",
"versionInfo": {
"niFiVersion": "1.7.1",
"javaVendor": "Oracle Corporation",
"javaVersion": "1.8.0_151",
"osName": "Windows 7",
"osVersion": "6.1",
"osArchitecture": "amd64",
"buildTag": "nifi-1.7.1-RC1",
"buildTimestamp": "07/12/2018 12:54:43 SGT"
}
}
}
}
Apache NiFiのアップグレードを開始する前に、リリースノートを読んで変更と追加について知ってください。ユーザーは、現在のNiFiインストールにおけるこれらの追加および変更の影響を評価する必要があります。以下は、ApacheNiFiの新しいリリースのリリースノートを入手するためのリンクです。
https://cwiki.apache.org/confluence/display/NIFI/Release+Notes
クラスターのセットアップでは、ユーザーはクラスター内のすべてのノードのNiFiインストールをアップグレードする必要があります。以下の手順に従って、ApacheNiFiをアップグレードします。
現在のNiFi、lib、またはその他のフォルダーにあるすべてのカスタムNARをバックアップします。
ApacheNiFiの新しいバージョンをダウンロードします。以下は、最新のNiFiバージョンのソースとバイナリをダウンロードするためのリンクです。
https://nifi.apache.org/download.html
現在のNiFiと同じインストールディレクトリに新しいディレクトリを作成し、新しいバージョンのApacheNiFiを抽出します。
NiFiを正常に停止します。まず、すべてのプロセッサを停止し、フローに存在するすべてのフローファイルを処理します。フローファイルがなくなったら、NiFiを停止します。
authorizers.xmlの構成を現在のNiFiインストールから新しいバージョンにコピーします。
新しいNiFiバージョンのbootstrap-notification-services.xmlおよびbootstrap.confの値を現在のものから更新します。
logback.xmlから新しいNiFiインストールにカスタムログを追加します。
現在のバージョンのlogin-identity-providers.xmlでログインIDプロバイダーを構成します。
新しいNiFiインストールのnifi.propertiesのすべてのプロパティを現在のバージョンから更新します。
権限拒否エラーを回避するために、新しいバージョンのグループとユーザーが現在のバージョンと同じであることを確認してください。
現在のバージョンのstate-management.xmlから新しいバージョンに構成をコピーします。
次のディレクトリの内容を、現在のバージョンのNiFiインストールから新しいバージョンの同じディレクトリにコピーします。
./conf/flow.xml.gz
また、アーカイブディレクトリのflow.xml.gz。
来歴とコンテンツリポジトリの場合、nifiの値を変更します。プロパティファイルを現在のリポジトリに保存します。
./state/localから状態をコピーするか、他の外部ディレクトリが指定されている場合はnifi.propertiesを変更します。
実行されたすべての変更を再確認し、新しいNiFiバージョンで追加された新しい変更に影響があるかどうかを確認します。影響がある場合は、解決策を確認してください。
すべてのNiFiノードを起動し、すべてのフローが正しく機能していて、リポジトリがデータを保存していて、Uiがエラーでデータを取得しているかどうかを確認します。
掲示板をしばらく監視して、新しいエラーがないか確認します。
新しいバージョンが正しく機能している場合は、現在のバージョンをアーカイブしてディレクトリから削除できます。
Apache NiFiリモートプロセスグループまたはRPGを使用すると、フローは、サイト間プロトコルを使用して、フロー内のFlowFileをさまざまなNiFiインスタンスに送信できます。バージョン1.7.1の時点では、NiFiはバランスの取れた関係を提供しないため、RPGはNiFiデータフローの負荷分散に使用されます。
開発者は、上の図に示すようにアイコンをキャンバスにドラッグすることで、NiFiUIの上部ツールバーからRPGを追加できます。RPGを構成するには、開発者は次のフィールドを追加する必要があります-
S.No. | フィールド名 | 説明 |
---|---|---|
1 | URL | カンマ区切りのリモートターゲットNiFiURLを指定します。 |
2 | トランスポートプロトコル | リモートNiFiインスタンスのトランスポートプロトコルを指定します。RAWまたはHTTPのいずれかです。 |
3 | ローカルネットワークインターフェース | データを送受信するローカルネットワークインターフェースを指定します。 |
4 | HTTPプロキシサーバーのホスト名 | RPGでの転送を目的としてプロキシサーバーのホスト名を指定します。 |
5 | HTTPプロキシサーバーポート | RPGでの転送を目的としてプロキシサーバーのポートを指定します。 |
6 | HTTPプロキシユーザー | HTTPプロキシのユーザー名を指定するオプションのフィールドです。 |
7 | HTTPプロキシパスワード | 上記のユーザー名のパスワードを指定するオプションのフィールドです。 |
開発者は、プロセッサを使用する前にプロセッサを起動するように、使用する前に有効にする必要があります。
Apache NiFiは共有サービスを提供します。これはプロセッサで共有でき、レポートタスクはコントローラ設定と呼ばれます。これらはデータベース接続プールのようなもので、同じデータベースにアクセスするプロセッサが使用できます。
コントローラの設定にアクセスするには、下の画像に示すように、NiFiUIの右上隅にあるドロップダウンメニューを使用します。
Apache NiFiによって提供される多くのコントローラー設定があります。一般的に使用されるものと、NiFiでのセットアップ方法について説明します。
DBCPConnectionPool
[コントローラー設定]オプションをクリックした後、[Nifi設定]ページにプラス記号を追加します。次に、コントローラー設定のリストからDBCPConnectionPoolを選択します。下の画像に示すように、DBCPConnectionPoolがメインのNiFi設定ページに追加されます。
コントローラに関する次の情報が含まれています setting:Name
- Type
- Bundle
- State
- Scope
- アイコンの構成と削除
構成アイコンをクリックして、必要なフィールドに入力します。フィールドは以下の表にリストされています-
S.No. | フィールド名 | デフォルト値 | 説明 |
---|---|---|---|
1 | データベース接続URL | 空の | データベースへの接続URLを指定します。 |
2 | データベースドライバクラス名 | 空の | mysqlのcom.mysql.jdbc.Driverのようなデータベースのドライバークラス名を指定します。 |
3 | 最大待機時間 | 500ミリ | データベースへの接続からデータを待機する時間を指定します。 |
4 | 最大合計接続数 | 8 | データベース接続プールに割り当てられた接続の最大数を指定します。 |
コントローラの設定を停止または構成するには、まず、接続されているすべてのNiFiコンポーネントを停止する必要があります。NiFiは、コントローラー設定にスコープを追加して、その構成を管理します。したがって、同じ設定を共有しているものだけが影響を受けることはなく、同じコントローラー設定を使用します。
Apache NiFiレポートタスクは、バックグラウンドで実行され、NiFiインスタンスの統計を送信またはログに記録するコントローラーサービスに似ています。NiFiレポートタスクには、コントローラー設定と同じページから、ただし別のタブからアクセスすることもできます。
レポートタスクを追加するには、開発者はレポートタスクページの右上にあるプラスボタンをクリックする必要があります。これらのレポートタスクは、主に、セキュリティ情報または来歴のいずれかでNiFiインスタンスのアクティビティを監視するために使用されます。主にこれらのレポートタスクは、サイト間を使用してNiFi統計データを他のノードまたは外部システムに転送します。
理解を深めるために、構成済みのレポートタスクを追加しましょう。
MonitorMemory
このレポートタスクは、メモリプールが指定されたパーセンテージを超えたときに、通知を生成するために使用されます。次の手順に従って、MonitorMemoryレポートタスクを構成します-
プラス記号を追加し、リストでMonitorMemoryを検索します。
MonitorMemoryを選択し、[追加]をクリックします。
レポートタスクのメインページのメインページに追加されたら、構成アイコンをクリックします。
[プロパティ]タブで、監視するメモリプールを選択します。
速報でユーザーに警告する割合を選択します。
レポートタスクを開始します。
ApacheNiFi-カスタムプロセッサ
Apache NiFiはオープンソースプラットフォームであり、開発者にNiFiライブラリにカスタムプロセッサを追加するオプションを提供します。次の手順に従って、カスタムプロセッサを作成します。
以下のリンクからMavenの最新バージョンをダウンロードしてください。
https://maven.apache.org/download.cgi
M2_HOMEという名前の環境変数を追加し、mavenのインストールディレクトリとして値を設定します。
以下のリンクからEclipseIDEをダウンロードします。
https://www.eclipse.org/downloads/download.php
コマンドプロンプトを開き、MavenArchetypeコマンドを実行します。
> mvn archetype:generate
アーキタイププロジェクトでnifiタイプを検索します。
org.apache.nifi:nifi-processor-bundle-archetypeプロジェクトを選択します。
次に、バージョンのリストから最新バージョン、つまりこのチュートリアルの1.7.1を選択します。
groupId、artifactId、version、package、artifactBaseNameなどを入力します。
次に、ディレクトリを作成する必要があるMavenプロジェクトが作成されます。
nifi-<artifactBaseName>-processors
nifi-<artifactBaseName>-nar
nifi- <artifactBaseName> -processorsディレクトリで以下のコマンドを実行して、プロジェクトを日食に追加します。
mvn install eclipse:eclipse
Eclipseを開き、ファイルメニューからインポートを選択します。
次に、「既存のプロジェクトをワークスペースに」を選択し、Eclipseのnifi- <artifactBaseName> -processorsディレクトリからプロジェクトを追加します。
プロセッサの実行がスケジュールされているときに実行されるpublicvoid onTrigger(ProcessContext context、ProcessSession session)関数にコードを追加します。
次に、以下のコマンドを実行して、コードをNARファイルにパッケージ化します。
mvn clean install
NARファイルはnifi-で作成されます
-nar / targetディレクトリ。 NARファイルをApacheNiFiのlibフォルダーにコピーし、NiFiを再起動します。
NiFiが正常に再起動したら、プロセッサリストで新しいカスタムプロセッサを確認します。
エラーがないか、。/ logs /nifi.logファイルを確認してください。
ApacheNiFi-カスタムコントローラーサービス
Apache NiFiはオープンソースプラットフォームであり、開発者にカスタムコントローラーサービスをApacheNiFiに追加するオプションを提供します。手順とツールは、カスタムプロセッサの作成に使用されるものとほぼ同じです。
コマンドプロンプトを開き、MavenArchetypeコマンドを実行します。
> mvn archetype:generate
アーキタイププロジェクトでnifiタイプを検索します。
選択する org.apache.nifi:nifi-service-bundle-archetype 事業。
次に、バージョンのリストから、このチュートリアルの最新バージョン–1.7.1を選択します。
groupId、artifactId、version、package、artifactBaseNameなどを入力します。
ディレクトリを持つMavenプロジェクトが作成されます。
nifi-<artifactBaseName>
nifi-<artifactBaseName>-nar
nifi-<artifactBaseName>-api
nifi-<artifactBaseName>-api-nar
nifi- <artifactBaseName>およびnifi- <artifactBaseName> -apiディレクトリで以下のコマンドを実行して、これら2つのプロジェクトを日食に追加します。
mvn install eclipse:eclipse
Eclipseを開き、ファイルメニューからインポートを選択します。
次に、「既存のプロジェクトをワークスペースに」を選択し、Eclipseのnifi- <artifactBaseName>およびnifi- <artifactBaseName> -apiディレクトリからプロジェクトを追加します。
ソースファイルにコードを追加します。
次に、以下のコマンドを実行して、コードをNARファイルにパッケージ化します。
mvnクリーンインストール
2つのNARファイルが各nifi- <artifactBaseName> / targetおよびnifi- <artifactBaseName> -api / targetディレクトリに作成されます。
これらのNARファイルをApacheNiFiのlibフォルダーにコピーし、NiFiを再起動します。
NiFiが正常に再起動したら、プロセッサリストで新しいカスタムプロセッサを確認します。
エラーがないか確認してください ./logs/nifi.log ファイル。
ApacheNiFi-ロギング
Apache NiFiは、ログバックライブラリを使用してログを処理します。NiFiのconfディレクトリにlogback.xmlファイルがあります。これはNiFiでのログ記録を構成するために使用されます。ログはNiFiのlogsフォルダに生成され、ログファイルは以下のとおりです。
nifi-app.log
これはnifiのメインログファイルであり、NARファイルの読み込みから、NiFiコンポーネントで発生したランタイムエラーや通知に至るまで、apacheNiFiアプリケーションのすべてのアクティビティをログに記録します。以下はのデフォルトのアペンダーですlogback.xml のファイル nifi-app.log ファイル。
<appender name="APP_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/
nifi-app_%d{yyyy-MM-dd_HH}.%i.log
</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<immediateFlush>true</immediateFlush>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
アペンダー名はAPP_FILEで、クラスはRollingFileAppenderです。これは、ロガーがロールバックポリシーを使用していることを意味します。デフォルトでは、最大ファイルサイズは100 MBであり、必要なサイズに変更できます。APP_FILEの最大保持期間は30ログファイルであり、ユーザーの要件に応じて変更できます。
nifi-user.log
このログには、Webセキュリティ、Web API構成、ユーザー認証などのユーザーイベントが含まれます。以下は、logback.xmlファイルのnifi-user.logのアペンダーです。
<appender name="USER_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/
nifi-user_%d.log
</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
アペンダー名はUSER_FILEです。ロールオーバーポリシーに従います。USER_FILEの最大保存期間は30ログファイルです。以下は、nifi-user.logにあるUSER_FILEアペンダーのデフォルトのロガーです。
<logger name="org.apache.nifi.web.security" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.api.config" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
nifi-bootstrap.log
このログには、ブートストラップログ、apache NiFiの標準出力(主にデバッグ用にコードに記述されたすべてのsystem.out)、および標準エラー(コードに記述されたすべてのsystem.err)が含まれます。以下は、logback.logのnifi-bootstrap.logのデフォルトのアペンダーです。
<appender name="BOOTSTRAP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap_%d.log
</fileNamePattern>
<maxHistory>5</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
nifi-bootstrap.logファイルのアペンダー名はBOOTSTRAP_FILEで、これもロールバックポリシーに従います。BOOTSTRAP_FILEアペンダーの最大保持は5ログファイルです。以下は、nifi-bootstrap.logファイルのデフォルトのロガーです。
<logger name="org.apache.nifi.bootstrap" level="INFO" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.bootstrap.Command" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.StdOut" level="INFO" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.StdErr" level="ERROR" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>