Apache Apache Flink 是一個開源的流處理框架,應用於分散式、高效能、高可用的資料流應用程式。可以處理有限資料流和無限資料,即能夠處理有邊界和無邊界的資料流。無邊界的資料流就是真正意義上的流資料,所以 Flink 是支援流計算的。有邊界的資料流就是批資料,所以也支援批次處理的。不過 Flink 在流處理上的應用比在批次處理上的應用更加廣泛,統一批次處理和流處理也是 Flink 目標之一。Flink 可以部署在各種叢集環境,可以對各種大小規模的資料進行快速計算。
在德語中,Flink 一詞表示快速和靈巧,專案採用一隻松鼠的彩色圖案作為 logo,這不僅是因為松鼠具有快速和靈巧的特點,還因為柏林的松鼠有一種迷人的紅棕色,而 Flink 的松鼠 logo 擁有可愛的尾巴,尾巴的顏色與 Apache 軟體基金會的 logo 顏色相呼應,也就是說,這是一隻 Apache 風格的松鼠
Flink 有如下特點:
Flink 主要應用於流式資料分析場景
Extraction-Transformation-Loading 的縮寫,中文名稱為資料抽取、轉換和載入.
整合流計算現有的諸多資料通道和 SQL 靈活的加工能力,對流式資料進行實時清晰、歸併和結構化處理;同時,對離線數倉進行有效的補充和優化,併為資料實時傳輸提供可計算通道。
實時化採集,加工流式資料儲存;實時監控和展現業務、客戶各類指標,讓資料化運營實時化。
對系統和使用者行為進行實時監測和分析,以便及時發現危險行為。
實時計算各類資料指標,並利用實時結果及時調整線上系統的相關策略,並應用於內容投放、智慧推播領域。
Flink 核心組成
Flink 生態發展
輸入 Connectors(左側部分)
流處理方式:包含 Kafka、AWS kinesis(實時資料流服務)、RabbitMQ、NIFI(資料管道)、Twitter(API)
批次處理方式:包含 HDFS、HBase、Amazon S3(檔案系統)、MapR FS(檔案系統)、ALLuxio(基於記憶體的分散式檔案系統)
中間是 Flink 核心部分
輸出 Connectors(右側部分)
流處理方式:包含 Kafka、AWS kinesis(實時資料流服務)、RabbitMQ、NIFI(資料管道)、Cassandra(NoSQL 資料庫)、ES、HDFS rolling file(捲動檔案)
批次處理方式:包含 HBase、HDFS
計算框架對比圖:
產品 | 模型 | API | 保證次數 | 容錯機制 | 狀態管理 | 延時 | 吞吐量 |
---|---|---|---|---|---|---|---|
storm | Native(資料進入立即處理) | 組合式 | At-least-once | Record ACKS | 無 | Low | Low |
Trident | mirco-batching(劃分為小批次處理) | 組合式 | Exectly-once | Record ACKs | 基於操作(每次操作由一個狀態) | Medium | Medium |
Spark streaming | mirco-batching | 宣告式(提供封裝後的高階函數) | Exectly-once | RDD Checkpoint | 基於 DStream | Medium | High |
Flink | Native | 宣告式 | Exectly-once | Checkpoint | 基於操作 | Low | Hign |
市面上的流處理引擎不止 Flink 一種,其他的比如 Storm、SparkStreaming、Trident 等,如何進行選型,給大家一些建議: