2

たとえば、分離するように指定した GetFile プロセッサがある場合、そのプロセッサからのフロー ファイルはどのようにクラスタ ノードに分散されますか?

追加する必要がある追加の作業/プロセッサはありますか?

4

2 に答える 2

8

今日の Apache NiFi では、クラスター全体の負荷分散の問題には 2 つの主な答えがあります。まず、最初にデータがクラスターに到達する方法を検討する必要があります。第二に、クラスターに入ったら、再調整する必要がありますか。

クラスターにデータを取り込むには、それ自体が本質的にスケーラブルなプロトコルを選択することが重要です。キューイング セマンティクスを提供するプロトコルはこれに適していますが、キューイング セマンティクスを提供しないプロトコルは問題があります。キューイング セマンティクスの例として、JMS キュー、Kafka、または一部の HTTP API を考えてみましょう。1 つまたは複数のクライアントがキュー形式でそれらからプルできるため、負荷が分散されるため、これらは優れています。このような動作を提供しないプロトコルの例としては、GetFile や GetSFTP などがあります。クライアントはプルするデータについての状態を共有する必要があるため、これらは問題があります。これらのプロトコルにも対処するために、「ListSFTP」と「FetchSFTP」のモデルに移行しました ここで、ListSFTP はクラスター内の 1 つのノード (プライマリ ノード) で発生し、NiFi のサイト間機能を使用してクラスターの残りの部分に負荷を分散し、各ノードが作業のシェアを取得し、FetchSFTP を実行して実際にデータをプルします。 . 現在、HDFS にも同じパターンが提供されています。

そのパターンを説明する際に、Site-to-Site についても言及しました。これは、2 つの nifi クラスターがデータを共有できる方法であり、サイト間およびサイト内の配布のニーズに最適です。また、同じクラスター内で負荷を分散するのにも適しています。このためには、データを同じクラスターに送信するだけで、NiFi が負荷分散とフェイルオーバー、新しいノードと削除されたノードの検出を処理します。

したがって、すでに優れたオプションがあります。とはいえ、私たちはもっと多くのことを行うことができ、将来的には、接続で自動負荷分散が必要であることを示す方法を提供する予定であり、その後、私が説明したことを舞台裏で行います.

ありがとうジョー

于 2016-01-20T21:05:20.527 に答える