Apache Flink 是由 Apache 軟體基金會開發的開源流處理框架，其核心是用 Java 和 Scala 編寫的分散式流資料流引擎。Flink 以資料並行和管道方式執行任意流資料程式 Alexander Alexandrov Rico Bergmann Stephan Ewen JohannChristoph Freytag Fabian Hueske Arvid Heise Odej Kao Marcus Leich Ulf Leser Volker Markl Felix Naumann Mathias Peters Astrid Rheinländer Matthias J Sax Sebastian Schelter Mareike Höger Kostas Tzoumas and Daniel Warneke 2014 The Stratosphere platform for big data analytics The VLDB Journal 23 6 December 2014 939964 DOI，Flink 的流水線執行時系統可以執行批處理和流處理程式。此外，Flink 的執行時本身也支援迭代演算法的執行。Stephan Ewen Kostas Tzoumas Moritz Kaufmann and Volker Markl 2012 Spinning fast iterative data flows Proc VLDB Endow 5 11 July 2012 12681279 DOI Flink 提供高吞吐量、低延遲的流資料引擎以及對事件 時間處理和狀態管理的支援。Flink 應用程式在發生機器故障時具有容錯能力，並且支援 exactlyonce 語義。程式可以用 Java、Scala、Python 和 SQL 等語言編寫，並自動編譯和最佳化 Fabian Hueske Mathias Peters Matthias J Sax Astrid Rheinländer Rico Bergmann Aljoscha Krettek and Kostas Tzoumas 2012 Opening the black boxes in data flow optimization Proc VLDB Endow 5 11 July 2012 12561267 DOI 到在叢集或雲環境中執行的資料流程式。Daniel Warneke and Odej Kao 2009 Nephele efficient parallel data processing in the cloud In Proceedings of the 2nd Workshop on ManyTask Computing on Grids and Supercomputers MTAGS 09 ACM New York NY USA Article 8 10 pages DOI Flink 並不提供自己的資料儲存系統，但為 Amazon Kinesis、Apache Kafka、Alluxio、HDFS、Apache Cassandra 和 Elasticsearch 等系統提供了資料來源和接收器。 開發 Apache Flink 是由 Apache 軟體基金會內的 Apache Flink 社群基於 Apache 許可證 20 開發的，該專案已有超過 100 位程式碼提交者和超過 460 貢獻者。 data Artisans 是由 Apache Flink 的創始人建立的公司。目前，該公司已聘用了 12 個 Apache Flink 的程式碼提交者。 概述 Apache Flink 的資料流程式設計模型在有限和無限資料集上提供單次事件（eventatatime）處理。在基礎層面，Flink 程式由流和轉換組成。 從概念上講，流是一種（可能永無止境的）資料流記錄，轉換是一種將一個或多個流作為輸入並因此產生一個或多個輸出流的操作。 Apache Flink 包括兩個核心 API：用於有界或無界資料流的資料流 API 和用於有界資料集的資料集 API。Flink 還提供了一個表 API，它是一種類似 SQL 的表示式語言，用於關係流和批處理，可以很容易地嵌入到 Flink 的資料流和資料集 API 中。Flink 支援的最高階語言是 SQL，它在語義上類似於表 API，並將程式表示為 SQL 查詢表示式。 程式設計模型和分散式執行時 Flink 程式在執行後被對映到流資料流，每個 Flink 資料流以一個或多個源（資料輸入，例如訊息佇列或檔案系統）開始，並以一個或多個接收器（資料輸出，如訊息佇列、檔案系統或資料庫等）結束。Flink 可以對流執行任意數量的變換，這些流可以被編排為有向無環資料流圖，允許應用程式分支和合並資料流。 Flink 提供現成的源和接收聯結器，包括 Apache Kafka、Amazon Kinesis、HDFS 和 Apache Cassandra 等。 Flink 程式可以作為叢集內的分散式系統執行，也可以以獨立模式或在 YARN、Mesos、基於 Docker 的環境和其他資源管理框架下進行部署。 狀態：檢查點、儲存點和容錯 Apache Flink 具有一種基於分散式檢查點的輕量級容錯機制。 檢查點是應用程式狀態和源流中位置的自動非同步快照。在發生故障的情況下，啟用了檢查點的 Flink 程式將在恢復時從上一個完成的檢查點恢復處理，確保 Flink 在應用程式中保持一次性（exactlyonce）狀態語義。檢查點機制暴露應用程式程式碼的介面，以便將外部系統包括在檢查點機制中（如開啟和提交資料庫系統的事務）。 Flink 還包括一種名為儲存點的機制，它是一種手動觸發的檢查點。使用者可以生成儲存點，停止正在執行的 Flink 程式，然後從流中的相同應用程式狀態和位置恢復程式。 儲存點可以在不丟失應用程式狀態的情況下對 Flink 程式或 Flink 群集進行更新。從 Flink 12 開始，儲存點還允許以不同的並行性重新啟動應用程式，這使得使用者可以適應不斷變化的工作負載。 資料流 API Flink 的資料流 API 支援有界或無界資料流上的轉換（如過濾器、聚合和視窗函式），包含了 20 多種不同型別的轉換，可以在 Java 和 Scala 中使用。 有狀態流處理程式的一個簡單 Scala 示例是從連續輸入流發出字數並在 5 秒視窗中對資料進行分組的應用： import orgapacheflinkstreamingapiscala_ import orgapacheflinkstreamingapiwindowingtimeTime case class WordCount word String count Int object WindowWordCount def main args Array String val env StreamExecutionEnvironmentgetExecutionEnvironment val text envsocketTextStream localhost 9999 val counts textflatMap _toLowerCasesplit W filter _nonEmpty map WordCount _ 1 keyBy word timeWindow Timeseconds 5 sum count countsprint envexecute Window Stream WordCount Apache Beam Flink Runner Apache Beam提供了一種高階統一程式設計模型，允許（開發人員）實現可在在任何執行引擎上執行批處理和流資料處理作業。Apache FlinkonBeam 執行器是功能最豐富的、由 Beam 社群維護的能力矩陣。 data Artisans 與 Apache Flink 社群一起，與 Beam 社群密切合作，開發了一個強大的 Flink runner。 資料集 API Flink 的資料集 API 支援對有界資料集進行轉換（如過濾、對映、連線和分組），包含了 20 多種不同型別的轉換。 該 API 可用於 Java、Scala 和實驗性的 Python API。Flink 的資料集 API 在概念上與資料流 API 類似。 表 API 和 SQL Flink 的表 API 是一種類似 SQL 的表示式語言，用於關係流和批處理，可以嵌入 Flink 的 Java 和 Scala 資料集和資料流 API 中。表 API 和 SQL 介面在關係表抽象上執行，可以從外部資料來源或現有資料流和資料集建立表。表 API 支援關係運算符，如表上的選擇、聚合和連線等。 也可以使用常規 SQL 查詢表。表 API 提供了和 SQL 相同的功能，可以在同一程式中混合使用。將錶轉換回資料集或資料流時，由關係運算符和 SQL 查詢定義的邏輯計劃將使用 Apache Calcite 進行最佳化，並轉換為資料集或資料流程式。 Flink Forward Flink Forward 是一個關於 Apache Flink 的年度會議。第一屆 Flink Forward 於 2015 年在柏林舉行。為期兩天的會議有來自 16 個國家的 250 多名與會者。 會議分為兩個部分，Flink 開發人員提供 30 多個技術演示，另外還有一個 Flink 培訓實踐。 2016 年，350 名與會者參加了會議，40 多位發言人在 3 個平行軌道上進行了技術講座。第三天，與會者被邀請參加實踐培訓課程。 2017 年，該活動也將擴充套件到舊金山。 會議致力於 Flink 如何在企業中使用、Flink 系統內部、與 Flink 的生態系統整合以及平臺的未來進行技術會談。它包含主題演講 Flink 使用者在工業和學術界的講座以及關於 Apache Flink 的實踐培訓課程。 來自以下組織的發言人在 Flink Forward 會議上發表了演講：阿里巴巴集團、、、第一資本、Cloudera、data Artisans、EMC、愛立信、Hortonworks、華為、IBM、Google、MapR、MongoDB、Netflix、、，Red Hat、ResearchGate、Uber 和 Zalando。 歷史 2010 年，研究專案 Stratosphere：雲上的資訊管理（由德國研究基金會（DFG）資助）由柏林工業大學、柏林洪堡大學和哈索普拉特納研究院合作啟動。Flink 從 Stratosphere 的分散式執行引擎的一個分支開始，於 2014 年 3 月成為 Apache 孵化器專案。2014 年 12 月，Flink 成為 Apache 頂級專案。德語 版本 原始釋出的日期 最新版本 釋出日期 20150624 091 20150901 20151116 0102 20160211 20160308 103 版 20160511 20160808 115 20170322 20170206 121 20170426 20170601 133 20180315 20171212 142 20180308 20180525 155 20181029 20180808 162 20181029 20181130 172 20190215 釋出日期 082018 Apache Flink16 092018 161102018 162 052018 Apache Flink15 072018 151072018 152082018 153092018 154102018 155 122017 年 Apache Flink14 022018 141032018 142 062017 Apache Flink13 062017 131082017 132032018 133 022017 Apache Flink12 042017 121 082016 Apache Flink11 082016 111092016 v1。12102016 v1。13122016 v1。14032017 v1。15 032016 Apache Flink10 042016 101042016 102052016 v1。03 112015 Apache Flink010 112015 0101022016 0102 062015 Apache Flink09 092015 091 042015 Apache Flink09 里程碑 1 Apache 孵化器釋出日期 012015 Apache Flink08 孵化 112014 Apache Flink07 孵化 082014 Apache Flink06 孵化 092014 061 孵化 052014 Stratosphere 05 062014051072014052 PreApache Stratosphere 釋出日期 012014 Stratosphere 04（03 版本被跳過） 082012 Stratosphere 02 052011 Stratosphere 01（082011011） 參見 其他類似的資料處理引擎，如 Storm 和 Spark。 Apache Beam，一種共享程式設計模型，Flink 是其創始後端。 參考文獻 外部連結 Category 自由系統軟體 Category 使用 Apache 許可證的軟體 CategoryApache 軟體基金會 Category 用 Java 程式設計的自由軟體 CategoryApache 軟體基金會專案 Category 有未審閱翻譯的頁面 Category 串流處理