Flink Stream バッチ統合コンピューティング (2): Flink の主な機能

目次

フリンクの主な機能

ストリーミング

豊富な状態管理

豊富な時間セマンティクスのサポート

   データパイプライン

フォールトトレランスメカニズム

フリンクSQL

SQL の CEP


Flinkアプリケーションは、メッセージ キューや分散ログ ( Apache KafkaKinesisなど) などのストリーミング データ ソースからのリアルタイム データだけでなく、さまざまなデータ ソースからの制限された履歴データも消費できます。同様に、Flinkアプリケーションによって生成された結果ストリームもさまざまなシンクに送信できます

Apache Flink は、幅広い機能を備えているため、さまざまな種類のアプリケーションの開発と実行に最適です。Flink の機能には、ストリーミングとバッチ処理のサポート、高度な状態管理、イベント時処理セマンティクス、および 1 回限りの保証が含まれます。さらに、Flink は Yarn、Mesos、Kubernetes などのさまざまなリソース管理プラットフォームにデプロイでき、スタンドアロン クラスターとしても使用できます。Flink は可用性が高く、単一障害点がありません。Flink は、数千のコアとテラバイトのアプリケーションに拡張し、高スループットと低遅延を提供することが証明されています。

フリンクの主な機能

  • ストリーミング

自然環境では、データ生成は本質的にストリーミングです。Webサーバーからのイベント データ、証券取引所からの取引データ、工場現場の機械からのセンサー データなど、そのデータはストリーミングされます。Flinkは、ミリ秒レベルの遅延処理機能を提供できる、高スループット、高性能、低遅延のリアルタイム ストリーム処理エンジンです。

無制限ストリームは、始まりと終わりがあるデータ ストリーム、つまり無限のデータ ストリームであり、プログラムは到着するデータを継続的に処理する必要があります。境界付きストリームは、開始と終了の制限されたサイズを持つデータの集合、つまり有限のデータ ストリームであり、バッチ処理は境界付きデータ ストリーム処理の例です。データセット全体のデータは、結果を出力する前に並べ替え、カウント、集計、計算を行うことができます。

このストリームベースの世界観アーキテクチャの最大の利点は、遅延が非常に低いことです。

  • 豊富な状態管理

Flinkはステートフル ストリーム処理です。Flink演算子はステートフルです。イベントの処理方法は、イベント前のすべてのイベント データの累積結果に依存する場合があります。ストリーム処理アプリケーションは、受信したイベントまたは中間結果を一定期間内に保存する必要があります。後の時点でのアクセスとその後の処理。

状態はタスクによって維持され、特定の結果の計算に使用されるすべてのデータはこのタスクの状態に属し、タスクのビジネス ロジックからアクセスできるローカル変数と考えることができます。

Flink は、状態の一貫性、障害処理、効率的なストレージとアクセスなどの状態管理を実行するため、開発者はアプリケーションのロジックに集中できます。Flink は、さまざまな基本的な状態タイプ、豊富な状態バックエンド状態をメモリまたはRocksDBに保存できるなど、豊富な状態管理を提供し、非同期および増分チェックポイントメカニズム、正確な 1 回のセマンティクスなどをサポートします。

Flinkアプリケーションの状態アクセスはローカルで行われます。これにより、スループットが向上し、待ち時間が短縮されます。通常、Flinkアプリケーションは状態をJVMヒープに保存しますが、状態が大きすぎる場合は、構造化データ形式で高速ディスクに保存することも選択できます。

  • 豊富な時間セマンティクスのサポート

時間はストリーム処理アプリケーションの重要な部分であり、リアルタイム ストリーム処理アプリケーションでは、時間セマンティクスに基づくウィンドウ集約、検出、照合などの操作が非常に一般的です。Flink は、豊富な時間セマンティック サポートを提供します。

    • イベント時間: イベント自体のタイムスタンプを計算に使用します。これにより、順序どおりに到着しない、または遅れて到着するイベントの処理が容易になります。
    • 取り込み時間: データが Flink に入る時間です
    • 処理時間: 時間ベースの操作を実行する各オペレーターのローカル システム時間であり、デフォルトの時間属性など、マシンに関連します。
    • ウォーターマークのサポート: Flink は、イベント時間の経過を測定するためにウォーターマークの概念を導入します。Watermark は、処理遅延とデータ整合性のバランスをとるための柔軟な保証も提供します。Watermark を使用してイベント ストリームを処理する場合、Flink は、計算完了後に関連データがまだ到着している場合に、データのリダイレクト (副出力) や以前に完了した計算結果の更新など、さまざまな処理オプションを提供します。
    • 非常に柔軟なストリーミング ウィンドウのサポート: Flink は、タイム ウィンドウ、カウント ウィンドウ、セッション ウィンドウ、およびデータ駆動型のカスタム ウィンドウをサポートできます。これらは、柔軟なトリガー条件を通じてカスタマイズして、複雑なストリーミング コンピューティング モードを実装できます。
  •    データパイプライン

ETL (抽出-変換-ロード) は、ストレージ システム間でデータを変換および移動するための一般的な方法です。通常、ETLタスクは定期的にトリガーされ、ビジネス データ システム内のデータを分析データベースまたはデータ ウェアハウスにコピーします。

 データ パイプラインの役割はETLタスクに似ています。データを変換し、あるストレージ システムから別のストレージ システムにデータを移動します。ただし、データ パイプライン操作は定期的にトリガーされるのではなく、データを連続ストリームとして処理します。その結果、継続的に生成されるソースからレコードを読み取り、低遅延で宛先に移動できます。

定期的なETLジョブと比較した継続的なデータ パイプラインの最大の利点は、待機時間が短いことです。さらに、データ パイプラインはより汎用的であり、データを継続的に消費および放出できるため、より多くのシナリオで使用できます。

  • フォールトトレランスメカニズム

分散システムでは、単一のタスクまたはノードのクラッシュまたは障害がタスク全体の障害につながることがよくあります。Flink は、例外が発生したときにタスクがユーザー データを失わず、自動的に復元できるようにするタスク レベルのフォールト トレランス メカニズムを提供します。

Flinkチェックポイントと障害回復機能は、障害発生前後のタスクのアプリケーション状態の一貫性を保証し、特定のストレージに対するトランザクション出力機能をサポートします。障害が発生した場合でも、正確な出力を保証することもできます。一度。

Flink はCheckpointに基づいてフォールト トレランスを実装します。ユーザーはタスク全体のCheckpoint戦略をカスタマイズできます。タスクが失敗した場合、タスクは最新のCheckpointの状態に復元でき、スナップショット後のデータはデータ ソースから再送信できます。 。つまり、データ ソースをリセットし、状態に記録された最後の消費のオフセットから消費プロセスを再開します。さらに、状態スナップショットは実行中に非同期で状態を取得して保存し、進行中のデータ処理ロジックをブロックしません。

セーブポイント:セーブポイントは、アプリケーション状態の一貫したスナップショットです。セーブポイントはチェックポイントメカニズムに似ていますが、セーブポイントは手動でトリガーする必要があります。セーブポイントにより、現在のストリーミング アプリケーションのステータス情報がタスク中に失われないことが保証されます。アップグレードまたは移行。いつでもタスクを実行するのに便利です。一時停止および再開します。

  • フリンクSQL

Table APISQL は、クエリの解析、検証、最適化のためにApache Calciteに依存しています。DataStreamおよびDataSet APIとシームレスに統合でき、ユーザー定義のスカラー関数、集計関数、およびテーブル値関数をサポートします。データ分析、 ETL 、その他のアプリケーションの定義を簡素化します次のコード例は、 Flink SQLステートメントを使用してセッション ヒットのカウント アプリケーションを定義する方法を示しています。

SELECT userId, COUNT(*) 
FROM clicks 
GROUP BY SESSION(clicktime, INTERVAL '30' MINUTE), userId
  • SQL の CEP

Flink を使用すると、パターン マッチングのためにCEP ( Complex Event Processing ) クエリ結果をSQLで表現し、 Flink上のイベント ストリームを評価できます。

CEP SQL は、MATCH_RECOGNIZESQL構文を通じて実装されますMATCH_RECOGNIZE句は、 Oracle Database 12c以降のOracle SQLでサポートされており、 SQLでイベント・パターン・マッチングを表現するために使用されますCEP SQLの使用例は次のとおりです。

SELECT T.aid, T.bid, T.cid
FROM MyTable
    MATCH_RECOGNIZE (
      PARTITION BY userid
      ORDER BY proctime
      MEASURES
        A.id AS aid,
        B.id AS bid,
        C.id AS cid
      PATTERN (A B C)
      DEFINE
        A AS name = 'a',
        B AS name = 'b',
        C AS name = 'c') AS T

おすすめ

転載: blog.csdn.net/victory0508/article/details/131310229