Apache-flink-libraries
Apache Flink-ライブラリ
この章では、Apache Flinkのさまざまなライブラリについて学習します。
複合イベント処理(CEP)
FlinkCEPは、連続ストリーミングデータのイベントパターンを分析するApache FlinkのAPIです。 これらのイベントはほぼリアルタイムであり、スループットが高く、待ち時間が短くなっています。 このAPIは主にセンサーデータで使用されます。センサーデータはリアルタイムで送信され、処理が非常に複雑です。
CEPは入力ストリームのパターンを分析し、すぐに結果を出します。 イベントパターンが複雑な場合に、リアルタイムの通知とアラートを提供する機能があります。 FlinkCEPは、さまざまな種類の入力ソースに接続し、それらのパターンを分析できます。
これは、CEPを使用したサンプルアーキテクチャがどのように見えるかです-
センサーデータはさまざまなソースから取得され、KafkaはストリームをApache Flinkに配信する分散メッセージングフレームワークとして機能し、FlinkCEPは複雑なイベントパターンを分析します。
パターンAPIを使用して、複雑なイベント処理用のプログラムをApache Flinkで作成できます。 これにより、連続ストリームデータから検出するイベントパターンを決定できます。 以下は、最も一般的に使用されるCEPパターンの一部です-
ベギン
開始状態を定義するために使用されます。 次のプログラムは、Flinkプログラムでどのように定義されているかを示しています-
Pattern<Event, ?> next = start.next("next");
どこで
現在の状態でフィルター条件を定義するために使用されます。
patternState.where(new FilterFunction <Event>() {
@Override
public boolean filter(Event value) throws Exception {
}
});
Next
新しいパターン状態と前のパターンを渡すために必要な一致イベントを追加するために使用されます。
Pattern<Event, ?> next = start.next("next");
に続く
新しいパターン状態を追加するために使用されますが、ここでは他のイベントが2つの一致するイベントで発生する可能性があります。
Pattern<Event, ?> followedBy = start.followedBy("next");
ゲリー
Apache FlinkのGraph APIはGellyです。 Gellyは、一連のメソッドとユーティリティを使用して、Flinkアプリケーションでグラフ分析を実行するために使用されます。 Gellyを使用して、Apache Flink APIを分散形式で使用して、巨大なグラフを分析できます。 同じ目的でApache Giraphのような他のグラフライブラリもありますが、GellyはApache Flinkの上で使用されるため、単一のAPIを使用します。 これは、開発と運用の観点から非常に役立ちます。
Apache Flink API-Gellyを使用して例を実行してみましょう。
まず、Apache Flinkのoptディレクトリからlibディレクトリに2つのGelly jarファイルをコピーする必要があります。 次に、flink-gelly-examples jarを実行します。
cp opt/flink-gelly* lib/
./bin/flink run examples/gelly/flink-gelly-examples_*.jar
PageRankの例を実行してみましょう。
PageRankは頂点単位のスコアを計算します。これは、インエッジを介して送信されたPageRankスコアの合計です。 各頂点のスコアは、アウトエッジ間で均等に分割されます。 高スコアの頂点は、他の高スコアの頂点によってリンクされています。
結果には、頂点IDとPageRankスコアが含まれます。
usage: flink run examples/flink-gelly-examples_<version>.jar --algorithm PageRank [algorithm options] --input <input> [input options] --output <output> [output options]
./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm PageRank --input CycleGraph --vertex_count 2 --output Print