図 1. GUI Apache NiFi。
機能:
- プロセッサの指向性グラフィックの視覚的な作成と管理。
- 非同期。流量と処理が異なる場合でも、高いスループットと自然なバッファリングを提供します。
- 関連する疎結合コンポーネントの作成を有効にし、他のコンテキストで再利用できます。
- 作業と問題領域の検索を容易にする便利なエラー処理。
- データの送信元、およびデータの流れと処理方法は、視覚的に表示され、簡単に追跡できます。
→ 詳細はこちら
Apache NiFiクラスターを構成する
Apache NiFiクラスターを起動するには、組み込みまたは外部のApache Zookeeperを使用できます。設定でconf / nifi.propertiesを設定できます。 ビルトインを使用します。
図 2. Apache NiFiクラスター図
Apache NiFiクラスターをセットアップするには、クォーラムを提供するために少なくとも3つのノードが必要です。 通常、ZooKeeperを3つまたは5つのノードで実行することをお勧めします。 3ノード未満で動作すると、障害が発生するまでの寿命が短くなります。 通常、5つ以上のノードで実行すると、必要以上のネットワークトラフィックが発生します。 3つすべてのインスタンスについて、クラスターの一般的なプロパティはデフォルト設定のままにしておくことができます。 ただし、これらのパラメーターを変更する場合、将来のクラスターノードごとに同じにする必要があることに注意してください。
Apache NiFiクラスターの構成を最小化するには、将来のクラスターの各ノードで次の操作を実行する必要があります。
- nifi.propertiesに必要なパラメーターを設定します
- zookeeper.propertiesでクラスターサーバーを指定する
- ローカルノードでZookeeperのIDを設定します
- state-management.xmlでZookeeperクラスターへの接続文字列を指定します
各ステップについて詳しく説明します。
1. nifi.propertiesで設定します。
nifi.cluster.is.node=true
nifi.cluster.node.address=<local-ip>
nifi.cluster.node.protocol.port=3030
nifi.state.management.embedded.zookeeper.start=true
nifi.remote.input.host=<local-ip>
nifi.web.http.host=<local-ip>
nifi.zookeeper.connect.string=<connect-string>
zkがコンマで区切られたサーバーの接続文字列リスト。
例:nifi01:2181、nifi02:21818、nifi03:2181
2. zookeeper.propertiesでクラスターサーバーを登録します。
server.1=<nifi-node1-ip>:2888:3888
server.2=<nifi-node2-ip>:2888:3888
server.3=<nifi-node3-ip>:2888:3888
initLimit=5
syncLimit=2
3.ローカルノードがZookeeperクラスターの一部である場合、。/ state / zookeeper / myidファイルでidを設定します。
4. state-management.xmlファイルにクラスターへの接続文字列を登録します
各ノードでApache NiFiを起動するには、次のコマンドを実行します。
bin/nifi.sh start
Apache NiFiが各ノードで起動される順序は関係ありません。 logs / nifi-app.logファイルを使用して、クラスターの起動プロセスを監視できます。
仮想環境でのローカルクラスターの起動
クラスターの操作を学習するには、仮想環境でApache NiFiクラスターをローカルで起動する機能が必要です。 Hashicorp VagrantとOracle VM VirtualBoxを使用して、仮想環境で実行しました。 vagrant-vbguestおよびvagrant-hostmanagerプラグインをインストールする必要があります。 起動プロセスを高速化し、促進するために、1つのコマンドで仮想環境でApache NiFiクラスターを起動できる特別な浮浪者プロビジョニングスクリプトが作成されました。
vagrant up
開始後、5〜7分以内に、 localhostのブラウザーでユーザーインターフェイスが利用可能になります:8080 /。 VirtualBoxを開いて確認することもできます。nifi01、nifi02、nifi03を実行している3つの仮想マシンが表示されます。
NiFiクラスターを起動するためのvagrantプロビジョニングスクリプトのソースコードはgithubで入手できます。
動的クラスター形成
状況によっては、接続されたデバイスがネットワーク上のクラスターを見つけて接続する必要がある場合があります。 これらの目的のために、ネットワーク上のデバイスを検索する「エージェント」プログラムが作成され、クラスターが検出されると(Apache NiFi REST APIを介してチェックします)接続します。 このプログラムのソースコードはgithubで入手できます。
エージェントを開始する例:
java -cp cluster-joiner-0.0.1-jar-with-dependencies.jar ru.itis.suc.NodeAgent /home/user/nifi/nifi-1.2.0 8085
引数は、Nifiへのパスと、エージェントが新しいクラスターを作成するときにリッスンするポートです。
開始後、クラスターはローカルネットワーク上で検索され、接続されます。 クラスターが見つからない場合、新しいクラスターの一部になる準備ができているデバイスがさらに2つあると、クラスターを作成しようとします。
図 3.クラスターで実行されているGUI Apache Nifi。
図 4.クラスターノードのリスト。
おわりに
この作業は、ローカルネットワーク上にApache NiFiクラスターを自動的に作成する可能性を実験および検証するために行われました。
もちろん、プリミティブアルゴリズムは検索と接続に使用されましたが、作業の目的はこの可能性を確認することだけでした。