Is Flink strong enough?

最もアクティブなビッグデータプロジェクトの一つとして、Flink は 8 年間にわたり Apache Software Foundation のトッププロジェクトであり続けてきた。

Apache Flink はリアルタイムビッグデータ分析エンジンであり、ストリーミングバッチ実行モードをサポートし、Hadoop エコシステムとシームレスに連携できる。2014 年に Apache インキュベータープロジェクトとして採択され、わずか数か月後に Apache のトッププロジェクトとなった。

Alibaba は Flink にとって非常に適したストリーミングシナリオを持っている。Flink の主導者として、Alibaba は 2015 年に Flink の研究を開始し、2016 年に初めて検索シーンで Flink を導入した。同時に、Alibaba は大規模ビジネスシナリオに適応させるため、Flink に多くの修正と改良を加えた。2017 年には Alibaba は Flink コミュニティ最大のユーザーとなり、Flink チームは数百人規模に達した。これらの初期の改良の一部は、Alibaba が 2018 年に発表した「Is Flink Enough Strong? Alibaba said: Not Enough.」という記事で解説されている。

2019 年、Alibaba は Flink の背後にある企業を買収し、内部バージョンである Blink を公式にオープンソース化し、100 万行以上のコードを貢献して、コミュニティの健全な発展を大きく推進した。2021 年の独身の日のセールでは、Flink が担うリアルタイムコンピューティングのピークが 1 秒あたり 40 億レコードに達し、データ量は 1 秒あたり 7 TB に達した。これは 1 秒で 500 万冊の新華字典を読むことに相当する。

近年、Flink コミュニティは国内外の技術カンファレンスで継続的に推進活動を行い、Flink の広範な採用を実現してきた。さまざまなアプリケーションシナリオがより広範になり、エコシステムも急速に発展している。Flink は強力になり、その設計目標はもはやストリームコンピューティングエンジンにとどまらず、ほとんどのデータアナリストが Flink のストリーミングおよびバッチ API を使用して、リアルタイムデータ統合、分析、リスク管理、オンライン機械学習シナリオのソリューションを構築できるようにすることにある。

2022 年 11 月 26 日から 27 日にかけて、Flink Forward Asia 2022 がオンラインで開催される予定であり、これは最近リリースされた重要な機能を総括する機会となる。
今回、Flink のストリーミングデータウェアハウス機能がより成熟し、CDC も複数のデータベースにアクセスできるようになった。
InfoQ はこの機会に、Apache Flink 中国コミュニティの創設者であり、Alibaba のオープンソースビッグデータプラットフォームの責任者である Wang Feng 氏にインタビューを行い、Flink のコア技術の進捗と今後の計画について話を聞いた。

ストリームコンピューティングからストリームバッチコンピューティングへ

Flink は Storm と Spark Streaming を打ち負かし、ストリームコンピューティングの唯一の標準となり、技術面での競合はいなくなった。

Flink が誕生当初に前世代のストリームコンピューティングエンジンである Storm を迅速に打ち負かせたのは、「ステートフルストリームコンピューティング」というコアコンセプトと特徴によるものである。Flink は高性能な純粋ストリームコンピューティングを提供するだけでなく、コンバージドコンピューティングと状態管理という 2 つの技術を通じて、フレームワークレベルで分散一貫性スナップショット技術によりユーザーに正確なデータ整合性を保証している。Mo Wen 氏によると、これが Flink が登場後にストリームコンピューティング分野で急速に新たな主流となった重要な理由である。

Spark Streaming も強力な Spark エコシステムにより、一部のストリームコンピューティングシナリオでの選択肢となり得るが、その本質は依然として Spark バッチエンジンに基づいている。純粋ではないストリーム実行モードは、実行パフォーマンスとストリームセマンティクスの表現を依然として制限する。

バッチコンピューティングに関して、Flink はほとんどの作業を完了し、ますます成熟してきている。「現在、Flink はバッチ処理標準テストセット TPC-DS を完全に実行でき、パフォーマンスも非常に良好で、主流のバッチ処理エンジンのレベルに達している。今後、Flink はバッチ処理の成熟度を継続的に改善し、ストリーム処理の天然の利点と組み合わせて、業界最高クラスのストリーミングおよびバッチコンピューティング体験をユーザーに提供するよう努めていく。」

なぜストリーミングバッチ統合が必要なのか。なぜ Flink ベースのストリーミングバッチコンピューティング技術がより有利なのか。

まずビジネスの観点からこの問題を見てみよう。初期の企業は基本的にオフラインビジネスで、バッチ処理ベースで 1 日 1 回レポートを実行していた。しかし、デジタル世界は進化しており、リアルタイムの需要はますます高まっている。リアルタイムリスク管理、リアルタイム BI 統計、リアルタイムレコメンデーション、リアルタイムモニタリングは夜間に実行することはできない(夜間には商品は既に売り切れているかもしれず、ユーザーは既に去っているかもしれない)。リアルタイムデータ分析はユーザーに価値をもたらすことができる。次第にオフラインとリアルタイムは 2 つの並列な分割リンクになっていく。リアルタイムデータトラフィックの割合が増え続けるにつれて、より多くのタスクを 2 回開発する必要が生じ、開発者は開発効率の問題に直面し始める。

さらに、リアルタイムとオフラインのリンクの分離には、ビジネス口径の一貫性の問題もある。従来の技術スキームでは、リアルタイムとオフラインは 2 セットのツールで作業しているのと同じである。異なる言語とエンジンが使用されており、データ口径を一致させることができない。そのような分析結果はビジネスの意思決定を妨げ、誤った判断を導くことさえある。

この時、ストリーミングバッチ統合はリアルタイムとオフラインの断片化を解決する「新しい手段」として自然に登場する。1 つの計算エンジンで開発された 2 つのリアルタイム・オフラインビジネスプロセスは、自然に一貫性を保ち、誤差が生じない。特にデータプラットフォームの検索、レコメンデーション、広告、マーケティング分析など、効率性の高いビジネスシナリオでは、ストリーミングとバッチングの需要が自然に高くなる。さらに、検索レコメンデーションシナリオでは、Flink のストリーミングバッチタスクとオンラインタスクを混在させて、リソースプールを共有して統一スケジューリングを行うことができ、サーバーリソースの利用を最大化できる。これも業界の先進的な実践である。

ストリーミングバッチ統合の新しいアーキテクチャがもたらすメリットは明白だが、それが「万能」な技術アーキテクチャであるわけではない。Mo Wen 氏は次のように考えている。「現在のデータビジネスが基本的にオフラインのデジタルウェアハウスで、一定規模のリアルタイムビジネスがない場合は、ストリーミングバッチ統合の改造を急ぐ必要はない。なぜならメリットが大きくないからである。リアルタイムビジネスのボリュームが主流になり、オフラインビジネスの割合が減少している場合、またはデータ整合性に対する要求がますます強くなっている場合は、ストリーミングバッチ統合アーキテクチャが未来の必然的な選択となる。」

ストリーミングデータウェアハウス:ストリーミングバッチ統合に基づく新しいデータウェアハウスアーキテクチャ

ストリームバッチ統合は技術的なコンセプトである。

Flink は SQL レイヤーでストリーミングとバッチのセマンティック表現機能を提供している。つまり、ユーザーは 1 セットの SQL を記述するだけで、リアルタイムとオフラインの両方のシナリオで使用でき、フル増分統合のデータ開発体験を得ることができる。

これでストリーミングバッチ統合のコンセプトは完成だろうか。明らかに十分ではない。データストレージチェーンには依然として多くの複雑さが残っているからである。たとえば、リアルタイムリンクでは Flink はデータを Kafka などのストリーミングストレージに書き込む必要がある。オフラインリンクでは、Flink はデータを Hive/Iceberg/Hudi などのバッチストレージに書き込むことが多い。2 つのストレージリンクは分離されており、ユーザーは依然として 2 つのデータリンクを同時に維持管理しなければならず、管理の難易度が高くなっている。

しかし、2 セットのストレージを同時に維持する必要がある主な理由は、業界に現在より生産的で利用可能なストリーミングバッチストレージが存在しないことである。効率的なストリーミング読み取り、ストリーミング書き込み、バッチ読み取り、バッチ書き込み機能を同時にサポートする必要がある。異なるビジネスニーズ(適時性、分析性など)を満たすために、ユーザーは複数のリンクを組み合わせたり、異なるストア間でデータを同期したりするしかない。これにより、リンク全体がますます複雑になるのは避けられない。

この問題を解決するために業界で利用可能なストリーミングバッチストレージはあるだろうか。Apache Hudi という主流のレイクストレージプロジェクトを思い浮かべるかもしれない。Hudi は確かにストリーミングバッチストレージ能力の面で業界で最も完成度の高い技術であるが、Hudi のストレージ構造の設計は大規模な更新には適していない。したがって、Flink コミュニティの次の段階の重要な方向性は、このユーザーの課題を解決し、ストリーミングバッチ統合のコンセプトをさらに改善し、真に利用可能なストリーミングバッチ統合ストレージ技術を提供することである。それにより、ストリーミングバッチ統合コンピューティングとストレージに基づく完全な新しいストリーミングデータウェアハウスアーキテクチャを立ち上げる。これが、Flink コミュニティが 2021 年末に Flink Table Store という独立したサブプロジェクトを立ち上げた背景でもある。

2022 年、Flink Table Store はゼロから 1 へのインキュベーションを完了し、2 つのリリースバージョンを公開した。Alibaba のほか、ByteDance を含む多くの企業がこのプロジェクトへの貢献に参加しており、多くの企業が試用を始めている。Flink コミュニティの次の重要な進化の方向性は、新しいストリーミングデータウェアハウスアーキテクチャであり、ユーザーにより簡潔でリアルタイムなデータウェアハウスアーキテクチャと、より統合された体験を提供する。これは、Flink が長年提唱してきたストリーミングバッチ統合コンセプトの完全な実装シナリオでもあり、ストリーミングバッチ統合コンピューティングとストレージの完璧な組み合わせでもある。

今回の Flink Forward Asia 2022 で、Mo Wen 氏は完全なプロダクションデモを披露した。これは Alibaba のリアルタイムコンピューティングプラットフォームをベースに、TPC-H ビジネス背景の下で完全なフローバッチデータ処理と分析プロセスを実行するものである。Flink CDC によるデータベースからのデータレイクへの取り込み(Table Store への書き込み)、Flink SQL によるリアルタイムストリーミング分析(Table Store のサブスクライブ)、およびバッチデータ修正とリアルタイムインタラクティブクエリを含み、完全な新しいストリーミングデータウェアハウスアーキテクチャを提示している。さらに、Flink ストリーミングデータウェアハウスアーキテクチャはオープンシステムでもあり、Hologres など、ストリーミングバッチ機能を備えた他のすべてのストレージシステムとの連携をサポートしている。Alibaba は内部で Flink SQL + Hologres を使用したエンタープライズレベルの独自ストリーミングデータウェアハウス製品を完成させており、間もなく正式リリースされる予定だ。

Flink ベースのフル増分統合データ統合

データ統合はリアルタイムストリーム処理プラットフォームにおいて非常に重要なアプリケーションシナリオであり、Gartner が 2022 年 1 月にリリースしたストリーム処理プラットフォームの市場ガイダンスレポートでも確認できる。グローバル市場から見ると、ストリーム処理シナリオの約 3 分の 1 はリアルタイムデータ統合に関連している。つまり、さまざまな常に変化するデータソースから分析データベース、データウェアハウス、データレイクへストリーム処理機能を通じてデータを同期し、ユーザーが最新のデジタル世界をリアルタイムで分析できるようにすることである。

リアルタイムデータ分析技術の普及に伴い、ユーザーのデータ同期ニーズはさらにアップグレードされている。統合されたフルデータ同期ツールを使用して、ワンクリックでデータ同期を実現することが期待されている。しかし、従来のデータ統合技術体系では、フルデータ同期とリアルタイムデータ同期には 2 セットのツール(バッチベースとストリームベース)が必要で、ユーザーはこの 2 セットのツール間で連携する必要がある。したがって、フル増分同期プロセスのシームレスな接続を真に実現し、データ整合性を確保することは非常に困難で課題が多い。ただし、Flink のストリーミングバッチ統合機能を活用すれば、リアルタイムデータのフル増分統合を実現することが可能になる。

さらに、Flink 自体には豊富なコネクタエコシステムがあり、業界のさまざまな主流ストレージに接続できるほか、フォールトトレランスや分散一貫性スナップショットを含む優れた分散統合フレームワークを備えている。したがって、Flink の基盤上でフル増分統合データ統合を行うことは「巨人の肩に乗る」ようなもので、より迅速で簡単になる。

これが Flink CDC プロジェクト誕生の背景である。Flink の多くの利点を活かして、ストリーミングバッチ統合実行モードでフル増分同期の自動切り替えを実現し、Flink のチェックポインティング機能によりデータ同期のブレークポイントからの再開機能を実現し、増分スナップショットの一貫性読み取りアルゴリズムにより、オンラインデータベースのロック不要な操作の全過程でデータ同期が本番ビジネスに一切影響を与えないことを保証している。

ストリーミングとバッチングを統合するもう 1 つの革新的なアプリケーションシナリオとして、CDC プロジェクトも急速に発展している。NetEase、Tencent、OceanBase、Bilibili、XTransfer などの企業がコミュニティ貢献に参加しており、GitHub のスター数は既に 3,000 を超えている。MySQL、PostgreSQL、MongoDB、TiDB、PolarDB、OceanBase を含む多くの主流データベースをエコロジカルにサポートしている。Mo Wen 氏は、Flink CDC が Flink コミュニティの革新的な成果をさらに活用して、より多くのデータソースにアクセスし、新世代のフル増分統合データ統合エンジンになると述べた。

クラウドネイティブ時代の Flink

クラウドネイティブの普及に伴い、ますます多くのエンタープライズアプリケーションがコンテナに移行し、K8s を通じて管理されるようになった。近年、ビッグデータ分野の Spark、Kafka なども K8s のサポートを開始し、ビッグデータアプリケーションを従来の YARN 時代からクラウドネイティブ時代へと移行させてきた。

Flink コミュニティは当初からクラウドネイティブを考慮して設計されており、Flink のリソーススケジューリングやストリーミングシャッフルなどは自然にクラウドネイティブに適している。ストリーミングコンピューティングエンジンとして、Flink はデータをダウンロードするのではなく、データをストリーミングする。
分散コンピューティング間のデータフローはネットワークとメモリを通じて行われ、ローカルディスクに依存しない。
したがって、ストレージとコンピューティングの分離が自然なアーキテクチャとなっている。さらに、Flink にはステートストアが組み込まれている。コンピューティングオペレーターとステートアクセスは統合されており、オペレーター内でのステートアクセスがサポートされている。実際、これもストレージとコンピューティングの分離に向かって進化している。つまり、Flink はいつでも RocksDB サービスをオフにして、ステートデータを永続的な HDFS またはクラウドストレージにスナップショットできる。

クラウドネイティブアーキテクチャの産物として、Flink は常にクラウドネイティブアーキテクチャを目指して設計されてきた。コミュニティは 5、6 年前に Flink を K8s 上で開始した。K8s をサポートすることで、Flink に大きな利点がもたらされる。たとえば、デプロイが Hadoop に依存しない。K8s が利用可能であれば、依存関係なしに Flink をデプロイできる。運用保守スキームも非常に標準化されており、K8s の運用保守システムで Flink も運用保守される。同時に、Flink はコンテナベースでもデプロイできる。コンテナは Flink に、タスクの分離、マルチテナント管理、さらには次のステップでのサーバーレスを含む、より優れた分離をもたらす。

クラウドネイティブの発展傾向において、適応性は非常に重要だ。より良いリソースの弾力性により、ビジネスの変動に対してより柔軟に対応でき、クラウド上のリソースも膨大だ。ユーザーはビジネスの必要に応じて、リソース規模を柔軟に調整し続けることができる。特にサーバーレス環境では、ユーザーはマシンリソースを考慮する必要さえない。Flink 自体もより多くの適応機能を追加して、タスクの同時実行数管理とステートデータ管理を自動的に行い、Flink がクラウド上の弾力メカニズムをより良く利用できるようにする。

Apache Flink は急速に発展し、広大なビッグデータ分析エコシステムにおいて不可欠な存在となり、エンタープライズデータ戦略の重要な柱となっている。ただし、一部の伝統的な企業にとっては、強力なビッグデータ技術チームなしでオープンソースソフトウェアを使ってデータ分析プラットフォームを構築することは難しい。そのため、Alibaba Cloud Flink の技術チームは、プロダクトベースのサービスを提供し、技術的なハードルを下げる取り組みも行っている。

Alibaba Cloud はクラウドネイティブなリアルタイムコンピューティング Flink プロダクトをリリースしており、Flink SQL を中心とした開発・運用保守プラットフォームを提供している。Alibaba で蓄積された Flink のプロダクション・運用保守経験とエンタープライズレベルの機能を、プロダクト化の形で中小企業に利用可能にし、リアルタイムデータウェアハウス、リアルタイムデータ統合、リアルタイムリスク管理、リアルタイム特徴量エンジニアリングなどのソリューションを提供し、デジタル企業がビッグデータ技術のリアルタイムアップグレードを加速するのを支援している。

さらに、Alibaba Cloud が提供する Flink プロダクトは最先端のサーバーレスアーキテクチャも使用しており、ユーザーはオンデマンドでコンピューティングリソースを購入するだけで Flink を利用でき、リアルタイムコンピューティングをより手頃な価格にしている。Mo Wen 氏は、今後数か月以内に、Flink ベースのマルチクラウド PaaS サーバーレスサービスが世界中でパブリックテストされる予定だと述べた。Flink コミュニティの継続的な技術革新を推進する中核 R&D チームとして、Alibaba Cloud は Flink 技術エコロジーを世界的にさらに推進することを期待している。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.