Azure HDInsight on AKS での Apache Flink® とは? (プレビュー)

重要

現在、この機能はプレビュー段階にあります。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用されるその他の法律条項については、「Microsoft Azure プレビューの追加使用条件」に記載されています。 この特定のプレビューの詳細については、「Azure HDInsight on AKS のプレビュー情報」を参照してください。 質問や機能の提案については、詳細を記載した要求を AskHDInsight で送信してください。また、その他の更新については、Azure HDInsight コミュニティのフォローをお願いいたします。

Apache Flink は、境界なしと境界ありのデータ ストリームに対するステートフルな計算のためのフレームワークおよび分散処理エンジンです。 Flink は、すべての一般的なクラスター環境で動作し、メモリ内の速度と任意の規模で計算およびステートフルなストリーミング アプリケーションを実行するように設計されています。 アプリケーションは、場合によっては数千個のタスクに並列化されます。これらは、クラスター内で分散され、同時に実行されます。 そのため、アプリケーションは無制限の量の vCPU、メイン メモリ、ディスク、ネットワーク IO を使用できます。 さらに、Flink は大きなアプリケーション状態を簡単に維持します。 その非同期の増分チェックポイント処理アルゴリズムにより、処理の待機時間への影響を最小限に抑えながら、厳密に 1 回の状態の整合性を保証します。

Apache Flink は、ストリーム処理用の非常にスケーラブルな分析エンジンです。

Flink が提供する主な機能のいくつかは次のとおりです。

  • 境界ありと境界なしのストリームに対する操作
  • メモリ内のパフォーマンス
  • ストリーミングとバッチの両方の計算の機能
  • 待機時間が短く、スループットが高い操作
  • 厳密に 1 回の処理
  • 高可用性
  • 状態とフォールト トレランス
  • Hadoop エコシステムと完全に互換性がある
  • ストリームとバッチの両方の統合 SQL API

Flink のアーキテクチャ図。

Apache Flink は、その豊富な機能セットにより、さまざまな種類のアプリケーションを開発して実行するための優れた選択肢です。 Flink の機能には、ストリームとバッチの処理のサポート、高度な状態管理、イベント時処理セマンティクス、状態に対する厳密に 1 回の整合性の保証が含まれます。 Flink には単一障害点がありません。 Flink は、数千個のコアと数テラバイトのアプリケーション状態に対応してスケーリングすることが実証されています。高いスループットと短い待機時間を実現し、世界で最も要求の厳しいストリーム処理アプリケーションのいくつかを駆動しています。

  • 不正検出: Flink を使用して、複雑なルールと機械学習モデルをストリーミング データに適用することで、不正なトランザクションやアクティビティをリアルタイムで検出できます。
  • 異常検出: Flink を使用して、センサーの読み取り値、ネットワーク トラフィック、ユーザーの動作などのストリーミング データでの外れ値や異常なパターンを特定できます。
  • ルールベースのアラート: Flink を使用して、温度、圧力、株価などのストリーミング データに対する定義済みの条件またはしきい値に基づいて、アラートまたは通知をトリガーできます。
  • ビジネス プロセス監視: Flink を使用して、注文調達、配送、カスタマー サービスなどのビジネス プロセスまたはワークフローの状態とパフォーマンスをリアルタイムで追跡および分析できます。
  • Web アプリケーション (ソーシャル ネットワーク): Flink を使用して、ユーザーが生成したデータ (メッセージ、いいね、コメント、レコメンデーションなど) をリアルタイムで処理する必要がある Web アプリケーションを駆動できます。

詳細については、Apache Flink ユース ケースで説明されている一般的なユース ケースを参照してください

HDInsight on AKS の Apache Flink クラスターは、フル マネージド サービスです。 以下の一覧は、HDInsight on AKS で Flink クラスターを作成する利点をまとめたものです。

機能 説明
簡単な作成 Azure Portal、Azure PowerShell、または SDK を使用すると、HDInsight に新しい Flink クラスターを数分で作成できます。 「HDInsight on AKS での Apache Flink クラスターの概要」を参照してください。
使いやすさ HDInsight on AKS の Flink クラスターには、ポータル ベースの構成管理とスケーリングが含まれます。 これに加えて、ジョブ管理 API を使用すると、ジョブ管理には REST API または Azure portal を使用します。
REST API HDInsight on AKS の Flink クラスターには、REST API ベースの Flink ジョブ送信メソッドであるジョブ管理 API が含まれており、Azure portal でジョブをリモートで送信および監視することができます。
展開の種類 Flink は、セッション モードまたはアプリケーション モードでアプリケーションを実行できます。 現在、HDInsight on AKS ではセッション クラスターのみがサポートされています。 1 つのセッション クラスターで複数の Flink ジョブを実行できます。 アプリ モードは、HDInsight on AKS クラスターのロードマップにあります
メタストアのサポート HDInsight on AKS の Flink クラスターでは、Azure Data Lake Storage Gen2 へのリモート チェックポイントを使用して、さまざまなオープン ファイル形式の Hive メタストアによるカタログをサポートできます。
Azure Storage のサポート HDInsight の Flink クラスターでは、Azure Data Lake Storage Gen2 をファイル シンクとして使用できます。 Data Lake Storage Gen2 について詳しくは、Azure Data Lake Storage Gen2 に関する記事を参照してください。
Azure サービスとの統合 HDInsight on AKS の Flink クラスターは、Azure Event Hubs および Azure HDInsight と共に Kafka に統合されています。 Event Hubs または HDInsight を使用してストリーミング アプリケーションを作成できます。
適応性 HDInsight on AKS では、自動スケール機能を使用してスケジュールに基づいて Flink クラスター ノードをスケーリングできます。 「Azure HDInsight on AKS クラスターを自動的にスケーリングする」を参照してください。
状態バックエンド HDInsight on AKS では、既定の StateBackend として RocksDB が使用されます。 RocksDB は、高速ストレージ用の埋め込み可能な永続的キー値ストアです。
チェックポイント チェックポイント処理は、HDInsight on AKS クラスターで既定で有効になっています。 HDInsight on AKS の既定の設定では、永続的ストレージ内の最後の 5 つのチェックポイントが維持されます。 ジョブが失敗した場合は、最新のチェックポイントからジョブを再開できます。
増分チェックポイント RocksDB では、増分チェックポイントがサポートされています。 大規模な状態には増分チェックポイントを使用することをお勧めしますが、この機能を手動で有効にする必要があります。 flink-conf.yaml: state.backend.incremental: true で既定値を設定すると、アプリケーションがコード内でこの設定をオーバーライドしない限り、増分チェックポイントが有効になります。 このステートメントは既定で true です。 または、コード EmbeddedRocksDBStateBackend` backend = new `EmbeddedRocksDBStateBackend(true); 内でこの値を直接構成することもできます (構成の既定値をオーバーライドします)。 既定では、構成されたチェックポイント ディレクトリ内の最後の 5 つのチェックポイントが保持されます。 この値は、構成管理セクション state.checkpoints.num-retained: 5 で構成を変更することで変更できます

HDInsight on AKS の Apache Flink クラスターには、クラスターで使用できる以下のコンポーネントが既定で含まれています。

近日公開予定のロードマップを参照してください。

Flink は、3 つの分散コンポーネント (ジョブ マネージャー、タスク マネージャー、ジョブ クライアント) を使用してジョブをスケジュールします。これらのコンポーネントは、リーダー/フォロワー パターンで設定されます。

Flink ジョブ: Flink ジョブまたはプログラムは、複数のタスクで構成されます。 タスクは Flink での基本的な実行単位です。 各 Flink タスクには並列処理のレベルに応じて複数のインスタンスがあり、各インスタンスはタスク マネージャーで実行されます。

ジョブ マネージャー: ジョブ マネージャーは、スケジューラとして機能し、タスク マネージャーでタスクをスケジュールします。

タスク マネージャー: タスク マネージャーには、タスクを並列で実行するための 1 つ以上のスロットが付属しています。

ジョブ クライアント: ジョブ クライアントは、ジョブ マネージャーと通信して Flink ジョブを送信します

Flink Web UI: Flink は、実行中のアプリケーションを検査、監視、デバッグするための Web UI を備えています。

ジョブ、ジョブ マネージャー、タスク マネージャー、ジョブ クライアントの連携方法を示す Flink プロセスの図。

リファレンス