# Apache Flink Apache Flinkは、Sparkと並ぶ代表的なデータフローエンジンであり、研究システムDryad・Nepheleに端を発する設計を持つ。MapReduceと異なり、ワークフロー全体を1つのジョブとして扱い、演算子がmap/reduceの固定役割に縛られず柔軟に組み合わせられる。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 11 Batch Processing]] "Dataflow Engines") - **耐障害性**: タスクのスナップショットを定期的にチェックポイントする方式で耐障害性を実現する。Sparkがリネージに基づく再計算で対応するのとは異なるアプローチであり、MapReduceが中間データを常にDFSへ書き戻す方式より効率的である。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 11 Batch Processing]] "Handling faults") - **クエリ言語**: Hive・Trino・Sparkと並び、コストベースクエリオプティマイザを持ち、ジョイン入力の性質を分析してアルゴリズムを自動選択し、ジョイン順序を最適化してジョブの中間状態量を最小化する。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 11 Batch Processing]] "Query Languages") - **機械学習・グラフ処理**: FlinkMLが特徴量エンジニアリング・統計関数・分類器を提供する。グラフ処理にはGelly APIを用い、bulk synchronous parallel(BSP、Pregelモデル)によるグラフアルゴリズムを実行できる。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 11 Batch Processing]] "Machine Learning") - **ストリーム処理との関係**: 本章(バッチ処理)ではバッチ実行エンジンとして扱われるが、次章(ストリーム処理)で改めて取り上げられる予定であり、バッチとストリームの両方を単一エンジンで扱える設計思想を持つ。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 11 Batch Processing]] "Dataflow Engines" 脚注) ## 関連 - 本ソース: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 11 Batch Processing]] - 関連概念: [[データフローエンジン]] / [[MapReduce]] / [[シャッフルと分散結合]] - 関連実体: [[Apache Spark]](同じくデータフローエンジンの代表例)