【アパッチフリンク】

Apache Flink(フリンク) とは?

最終更新:
💡 流れるデータを止めずに処理する高速エンジン

終わりのないデータの流れ(ストリーム)と、終わりのあるデータ(バッチ)の両方を、状態を持ちながら処理できる分散処理フレームワーク。低レイテンシのリアルタイム処理基盤として使われている。

📌 このページのポイント
Apache Flink ストリーム処理フロー Kafka IoTセンサー DB変更ログ データソース フィルタ/変換 ウィンドウ集計 結合/パターン検出 Apache Flink チェックポイント(状態のExactly-once) ダッシュボード データレイク アラート通知 出力先
Apache Flinkのストリーム処理フロー
ひよこ ひよこ
ストリーム処理って、データが来るたびにすぐ処理するってこと?
ペンギン先生 ペンギン先生
そうだよ。たとえばECサイトで注文が入った瞬間に不正を検知するとか、IoTセンサーのデータをリアルタイムに集計するとか。データを溜めてからまとめて処理するバッチと違って、流れてくるデータをその場で処理するんだ
ひよこ ひよこ
SparkのStructured Streamingとはどう違うの?
ペンギン先生 ペンギン先生
SparkのStructured Streamingは、標準ではデータを小さなバッチに区切って順に処理する「マイクロバッチ」方式で、公式ドキュメントでは遅延を100ミリ秒程度まで縮められると説明されているよ。Flinkは最初から連続するストリームを処理する前提で設計されていて、処理中の状態を手元のメモリなどに置いて低いレイテンシで処理できるんだ。実際の速さは処理内容や設定で変わるから、要件に合わせて測って選ぼうね
ひよこ ひよこ
Exactly-onceって何がすごいの?
ペンギン先生 ペンギン先生
分散システムでは、障害から復旧するときにデータを二重に処理したり取りこぼしたりしがちなんだ。Flinkはチェックポイントで各処理の状態を定期的に保存して、障害時はそこから再開することで、各イベントが状態に1回だけ反映されるようにしているよ。ただし外部への出力まで1回にするには、入力を読み直せることと、出力先がトランザクションかべき等な書き込みに対応していることが必要なんだ
ひよこ ひよこ
どんな会社が使ってるの?
ペンギン先生 ペンギン先生
公式サイトの利用例には、Blinkというフォーク版で検索ランキングをリアルタイムに最適化しているAlibabaや、Flinkの上にSQLで使えるストリーム分析基盤AthenaXを作ったUberなどが載っているよ
ひよこ ひよこ
Flinkは学ぶの難しい?
ペンギン先生 ペンギン先生
JavaのDataStream APIに加えて、SQLで書けるFlink SQLやTable APIもあるから、SQLが分かれば始めやすいよ。ただ2025年3月のFlink 2.0でScalaのAPIとDataSet APIは削除されたから、古い記事を参考にするときは注意しよう。AWSのAmazon Managed Service for Apache Flinkのようなマネージドサービスを使えば、クラスタ管理の手間も減らせるんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Apache Flink」って出てきたら「データをリアルタイムに流しながら処理する分散エンジン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Apache Flink」 = アパッチフリンク
💬 ドイツ語のflinkは「素早く器用に動く」という意味の形容詞だよ。名前の由来の公式な説明は見つからなかったけど、Flinkは2009年にベルリン工科大学(TU Berlin)などで始まった研究プロジェクトStratosphereがルーツなんだ

参考資料

← 用語集にもどる