Apache-flink-architecture
Apache Flink-アーキテクチャ
Apache FlinkはKappaアーキテクチャで動作します。 Kappaアーキテクチャには単一のプロセッサがあります-ストリームは、すべての入力をストリームとして扱い、ストリーミングエンジンはデータをリアルタイムで処理します。 kappaアーキテクチャのバッチデータは、ストリーミングの特殊なケースです。
次の図は、 Apache Flink Architecture を示しています。
Kappaアーキテクチャの重要なアイデアは、単一のストリーム処理エンジンを介してバッチデータとリアルタイムデータの両方を処理することです。
ほとんどのビッグデータフレームワークは、バッチデータとストリーミングデータ用に別々のプロセッサを備えたLambdaアーキテクチャで動作します。 Lambdaアーキテクチャでは、バッチビューとストリームビューに別々のコードベースがあります。 クエリを実行して結果を取得するには、コードベースをマージする必要があります。 個別のコードベース/ビューを維持せずにマージするのは苦痛ですが、Kappaアーキテクチャは、ビューが1つしかないためリアルタイムでこの問題を解決します。したがって、コードベースのマージは必要ありません。
これは、KappaアーキテクチャがLambdaアーキテクチャに取って代わることを意味するものではなく、ユースケースと、どのアーキテクチャが望ましいかを決定するアプリケーションに完全に依存します。
次の図は、Apache Flinkジョブ実行アーキテクチャを示しています。
プログラム
これはコードの一部であり、Flink Clusterで実行します。
クライアント
コード(プログラム)を取得し、ジョブデータフローグラフを作成し、それをJobManagerに渡します。 また、ジョブの結果も取得します。
JobManager
クライアントからジョブデータフローグラフを受け取った後、実行グラフを作成します。 ジョブをクラスター内のTaskManagersに割り当て、ジョブの実行を監視します。
タスクマネージャー
JobManagerによって割り当てられたすべてのタスクを実行します。 すべてのTaskManagerは、指定された並列処理で個別のスロットでタスクを実行します。 タスクのステータスをJobManagerに送信する必要があります。
Apache Flinkの機能
Apache Flinkの機能は次のとおりです-
- バッチプログラムとストリームプログラムの両方を実行できるストリーミングプロセッサを備えています。
- 超高速でデータを処理できます。
- Java、Scala、Pythonで利用可能なAPI。
- すべての一般的な操作にAPIを提供します。これは、プログラマーにとって非常に使いやすいです。
- 低レイテンシ(ナノ秒)および高スループットでデータを処理します。
- そのフォールトトレラント。 ノード、アプリケーション、またはハードウェアに障害が発生しても、クラスターには影響しません。
- Apache Hadoop、Apache MapReduce、Apache Spark、HBase、その他のビッグデータツールと簡単に統合できます。
- メモリ内管理は、計算を改善するためにカスタマイズできます。
- 高度にスケーラブルであり、クラスター内で最大数千のノードに拡張できます。
- Apache Flinkではウィンドウイングは非常に柔軟です。
- グラフ処理、機械学習、複合イベント処理ライブラリを提供します。