LoginSignup
15

More than 5 years have passed since last update.

Apache NiFiで基本のデータフローを作成するには?

Last updated at Posted at 2015-11-10

前回にApache NiFiの起動を行うことが出来たので、今回は実際にNiFiを使用して小さなデータフローを作成してみます。

基本の画面構成

まず、改めてNiFiの画面を見てみます。
実際にデータフローを配置するキャンバス部の上部に、実際に画面を配置するコンポーネント(赤枠)、コンポーネントを操作するボタン(青枠)、画面上の動作状況を表示するバー(緑枠)が表示されている構成になっています。
NiFi画面概要

基本の操作方法

では、実際に上記の画面を使ってデータフローを配置していきます。
ただ、マニュアルをQiita上で書くわけにもいかないため、やる操作の基本的な内容を流していく形になります。

Processorの配置

NiFiではデータを外部から取得したり、整形したり、外部に出力を行うコンポーネントのことを「Processor」と呼びます。
Processorは赤枠の左端の矢印が回転しているアイコンが該当します。
実際にProcessorをキャンバス上に配置する場合にはProcessorアイコンをドラッグしてキャンバス上に持ってきます。
すると、下記のようにどんなProcessorを配置するか確認するウィンドウが表示されます。
NiFi20.JPG

とりあえず、簡易に出来そうなTwitterを取得するProcessor(GetTwitter)を検索で絞り込み、配置します。
Processor配置確認(Twitter)

TwitterのProcessorは下記のようにメニューが存在しますが、とりあえずはそのままで進めます。
NiFi03.JPG

次に、簡単なデータ出力先として、ファイル出力のProcessor(PutFile)を配置します。
NiFi04.JPG

Processor同士の接続

Processorを配置したので、Processor間をドラッグしてみると、下記のようにConnectionの作成ウィンドウが表示されるため、Addボタンを押下して追加します。
NiFi06.JPG

追加時に下記のような設定も可能ですが、詳細はわからないため今はスキップします。
NiFi07.JPG

Processorの動作開始(失敗)

Processorを配置して、Connectionでつないだため、Processorを選択して開始ボタン(青枠の右矢印ボタン)を押下すると、下記のように正常なProcessorが存在しない旨のエラーが。
ですので、実際にProcessorの設定を確認してみることにします。
NiFi08.JPG

Processorの設定項目エラー表示

実際にProcessorに黄色い三角のエラー表示があるため、エラー内容を確認してみます。
エラー内容自体はProcessorにマウスオーバーすると下記のように表示されるため、とりあえずこれを解消すればいい模様。
NiFi09.JPG
NiFi10.JPG

Twitter側はDeveloper登録をして下記画面のようにKeyとTokenを設定します。
NiFi11.JPG
あとはSchedulingも下記のようにしておきます。(設定することの意味は現状不明)
NiFi03.JPG

同様に、PutFile側も「Relationship Success」「Relationship Failure」にチェックを入れ、「Properties>Directory」に「/temp/NiFi」ディレクトリを設定しておきます。

そうすると、下記のようにエラーが解消され、「停止状態」にあることが表示されるようになります。
NiFi12.JPG

Processor動作開始

エラーが解消できたので、次は実際に動作開始です。
GetTwitterのProcessorとPutFileのProcessorを選択し、画面上部の開始ボタンを押下します。
すると、下記のように実際に動作が開始され、In/Out値等が更新されていきます。
NiFi14.JPG

実際に、PutFileに設定した「/temp/NiFi」ディレクトリ配下を見てみると、下記のように1つぶやきごとにファイルが生成されています。
NiFi15.JPG
中身はJSON形式のTwitterつぶやき情報となっていました。(これは当たり前か)

一部のProcessorのみの実行

とりあえず確認できたので全体を停止してみると、下記のようにConnection部にデータがキューイングされていることがわかります。
NiFi16.JPG
ですので、PutFileのみを開始してみると、下記のようにキューイングされたデータがファイルに出力されることが確認できました。
NiFi17.JPG
キューの最大サイズ等も定義されているため、これでBackPressureを実現している・・のでしょうか。
そのあたりはまたおいおい。

という流れで、Twitterからつぶやき情報を取得してファイルに出力するという非常に基本的なデータフローではありますが、画面から定義できることを確認できました。

まとめ

  • 基本的なフローをNiFiのUIから定義できることを確認しました
    • NiFiはProcessorを処理単位とし、Connectionでつなぐことでデータフローを実現する
    • Processorのエラー内容は画面から確認できる
  • NiFiはConnectionにデータをキューイングすることが可能
    • 下流のProcessorを再開することで、キューイングされたデータを処理するといったことも可能

とりあえず、基本の一本は通ったので、次はNiFiのOverviewのページを見てみるか、それとももっと操作を試してみるか・・・
とまぁ、それは次回にでも。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15