NiFi を使用する

Prev Next

VPC環境で利用できます。

NiFiは Dataflowエンジンとして、お互い違うシステム間のデータを処理してリリースする、使用が簡単で安定的なシステムです。NiFiはデータを収集および処理した後、積載するための ETLツールの一種として、分散環境において大量のデータを収集および処理して FBP概念を実現して作ったオープンソースです。
NiFiはリアルタイム処理に非常に適合しており、データ消失なしでデータ送信が可能だというメリットがあります。

NiFiの構成要素

NiFiを構成するコンポーネントは大きく4つで、FlowFile、Processor、Connector、Controllerであり、各要素別の説明は次の通りです。
chadoop-nifi-1-1_ko

  • FlowFile: NiFiが認識するデータの単位
    • Content: データ自体を意味
    • Attribute: データ関連情報をキー/値のペアで表現したもの
  • Processor: FlowFileを収集、変形、保存する機能
    • データ処理を完了した後に新たな FlowFileを作成できる
    • Processorは複数個が並列で動作できる
  • Connector: Processorと Processorを連携し、FlowFileを転送する機能
    • FlowFileの Queueを意味
    • 優先順位および backpressureを設定して負荷を調整
  • Flow Controller: 各プロセスを連携し、その間を行き来する FlowFileを管理

NiFi を使用する

Local Fileを HDFSに移動させる Data Flowを作成する方法を説明します。ローカルディレクトリに作成したファイルが NiFi Data Flowを通じて HDFSに移動する全手順と手順別の説明は、次の通りです。

1. GetFileプロセッサ作成
2. ローカルファイル作成
3. HDFSプロセッサ作成
4. プロセッサ連携
5. 実行と結果確認
6. トラブルシューティング

1. GetFileプロセッサ作成

NiFiで GetFileプロセッサを作成する方法は、次の通りです。

  1. マスターノードの /tmpディレクトリに以下のように nifi-testディレクトリを作成します。
mkdir /tmp/nifi-test
chown nifi /tmp/nifi-test
  1. NiFi Web GUIのコンポーネントツールバーからプロセッサをドラッグしてキャンバスの上に移動します。
    chadoop-nifi-1-2-3_ko

  2. NiFi Web GUIで GetFileプロセッサを作成した後に設定します。
    chadoop-nifi-1-2-4_ko

  3. GetFileプロセッサを右クリックし、 [Configure] ボタンをクリックします。

  4. [PROPERTIES] タブをクリックします。

  5. Input Directory項目に nifi-testディレクトリの位置を入力し、 [APPLY] ボタンをクリックします。
    chadoop-nifi-1-2_ko

2. ローカルファイル作成

ローカル環境で任意のファイルを作成する方法は、次の通りです。以下のように viを利用して test1.txtファイルを作成します。

[irteamsu@dev-nch271-ncl nifi-test]$ vi test1.txt

3. HDFSプロセッサ作成

NiFiで HDFSプロセッサを作成する方法は、次の通りです。

  1. 以下のようにローカル環境にあるデータを保存する HDFSディレクトリを作成します。
sudo -u hdfs hdfs dfs -mkdir -p /user/nifi
sudo -u hdfs hdfs dfs -chown nifi /user/nifi
  1. NiFi Web GUIで PutHDFSプロセッサを NiFi GUIを通じてキャンバスの上に作成します。
  2. PutHDFSプロセッサを右クリックし、 [Configure] ボタンをクリックします。
  3. [PROPERTIES] タブをクリックして以下のようにプロパティを作成します。
  • Hadoop Configuration Resources : /etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
  • Directory : /user/nifi
  1. [RELATIONSHIPS] タブをクリックし、failuresuccessterminateにすべてチェックを入れます。
    chadoop-nifi-3

4. プロセッサ連携

NiFiで GetFileプロセッサと PutHDFSプロセッサを連携する方法は、次の通りです。

  1. NiFi Web GUIで GetFileプロセッサにマウスオーバーし、連携アイコンをドラッグして PutHDFSプロセッサに連携します。
  2. 完成した Data Flowは次の通りです。
    chadoop-nifi-1-3_ko

5. 実行と結果確認

NiFiで Data Flowを実行してローカル環境で実行結果を確認する方法は、次の通りです。

  1. NiFi Web GUIにアクセスします。

  2. GetFileプロセッサにカーソルを当てて右クリックし、 [Start] ボタンをクリックします。

  3. PutHDFSプロセッサにカーソルを当てて右クリックし、 [Start] ボタンをクリックします。

  4. /tmp/nifi-testディレクトリを確認するには、ローカル環境で以下のように入力します。

    [irteamsu@dev-nch271-ncl nifi-test]$ pwd
     /tmp/nifi-test
    [irteamsu@dev-nch271-ncl nifi-test]$ ls
    
    • NiFi Data Flowによりローカル環境のファイルが HDFSに移動され、/tmp/nifi-testディレクトリにファイルが存在しません。
  5. HDFSに移動したファイルを確認するにはローカル環境で以下のように入力します。

    [irteamsu@dev-nch271-ncl nifi-test]$ sudo -u hdfs hdfs dfs -ls /user/nifi
    Found 1 items
    -rw-r--r--   2 nifi hdfs          4 2023-08-29 17:33 /user/nifi/test1.txt
    [irteamsu@dev-nch271-ncl nifi-test]$ sudo -u hdfs hdfs dfs -cat /user/nifi/test1.txt   
    
    • NiFi Data Flowを通じてローカル環境のファイルが HDFSに移動しました。
参考

ローカル環境の /tmp/nifi-testディレクトリ内にファイルが作成されると、そのファイルは自動的に HDFSに移動され、ローカル環境のファイルは削除されます。

6. トラブルシューティング

Data Flowに問題が生じた時は Data Provenanceを確認して問題を解決できます。Data Provenanceを確認する方法は、次の通りです。

  1. NiFi Web GUIで確認するプロセッサにカーソルを当てて右クリックします。
  2. [View data provenance] ボタンをクリックします。
  3. 以下のように Data Provenance情報を確認します。
    chadoop-nifi-1-4_ko

chadoop-nifi-1-5_ko