Apache-flink-architecture

提供:Dev Guides
移動先:案内検索

Apache Flink-アーキテクチャ

Apache FlinkはKappaアーキテクチャで動作します。 Kappaアーキテクチャには単一のプロセッサがあります-ストリームは、すべての入力をストリームとして扱い、ストリーミングエンジンはデータをリアルタイムで処理します。 kappaアーキテクチャのバッチデータは、ストリーミングの特殊なケースです。

次の図は、 Apache Flink Architecture を示しています。

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ではウィンドウイングは非常に柔軟です。
  • グラフ処理、機械学習、複合イベント処理ライブラリを提供します。