Apache Flink是一個開源流處理框架,由Apache軟件基金會開發。它使用Java和Scala編寫,核心是一個分布式流數據引擎,以數據并行和流水線方式執行任意流數據程序。Flink的流水線運行時系統可以執行批處理和流處理程序,并且支持迭代算法的執行。Flink提供高吞吐量、低延遲的流數據引擎,以及對事件-時間處理和狀態管理的支持。Flink應用程序在發生機器故障時具有故障容許度能力,并且支持exactly-once語義。
開發信息
apache Flink是由Apache軟件基金會內的Apache Flink社區基于Apache許可證2.0開發的,該項目已有超過100位代碼提交者和超過460貢獻者。data Artisans是由Apache Flink的創始人創建的公司。目前,該公司已聘用了12個Apache Flink的代碼提交者。
產品簡介
基本概述
Apache Flink的數據流編程模型在有限和無限數據集上提供單次事件(event-at-a-時間)處理。在基礎層面,Flink程序由流和轉換組成。
Apache Flink的API:有界或無界數據流的數據流API、用于有界數據集的數據集API、表API。
運行流程
Flink程序在執行后被映射到流數據流,每個Flink數據流以一個或多個源(數據輸入,例如消息隊列或文件系統)開始,并以一個或多個接收器(數據輸出,如消息隊列、文件系統或數據庫等)結束。Flink可以對流執行任意數量的變換,這些流可以被編排為有向無環數據流圖,允許應用程序分支和合并數據流。
數據源和接收器
Flink提供現成的源和接收連接器,包括Apache Kafka、Amazon Kinesis、hdfs和Apache Cassandra等。
Flink程序可以作為集群內的分布式系統運行,也可以以獨立模式或在yarn、Mesos、基于Docker的環境和其他資源管理框架下進行部署。
產品狀態
Flink檢查點和故障容許度:檢查點是應用程序狀態和源流中位置的自動異步快照。在發生故障的情況下,啟用了檢查點的Flink程序將在恢復時從上一個完成的檢查點恢復處理,確保Flink在應用程序中保持一次性(exactly-once)狀態語義。檢查點機制暴露應用程序代碼的接口,以便將外部系統包括在檢查點機制中(如打開和提交數據庫系統的事務)。
Flink保存點的機制是一種手動觸發的檢查點。用戶可以生成保存點,停止正在運行的Flink程序,然后從流中的相同應用程序狀態和位置恢復程序。保存點可以在不丟失應用程序狀態的情況下對Flink程序或Flink群集進行更新。
數據流API
Flink的數據流API支持有界或無界數據流上的轉換(如過濾器、聚合和窗口函數),包含了20多種不同類型的轉換,可以在Java和Scala中使用。
有狀態流處理程序的一個簡單Scala示例是從連續輸入流發出字數并在5秒窗口中對數據進行分組的應用:
處理作業
Apache Beam“提供了一種高級統一編程模型,允許(開發人員)實現可在在任何執行引擎上運行批處理和流數據處理作業”。Apache Flink-on-Beam運行器是功能最豐富的、由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進行優化,并轉換為數據集或數據流程序。
歷史版本
參考資料 >
Apache Flink:引領流處理框架革新的開源項目.百度智能云.2024-03-23
Apache Flink .apache.2024-03-23