實時流處理框架Apache Flink簡介

banq發表於2015-05-08
如今流處理越來越流行,例如Apache Kafka, Apache Samza, Apache Storm, Apache Spark的Streaming模組等等,雲服務還有類似Google Cloud Dataflow。

Apache Flink作為一個新的流處理系統,其特點是:
1. 低延遲的流處理器
2.豐富的API能夠幫助程式設計師快速開發流資料應用
3.靈活的操作狀態和流視窗
4.高效的流與資料的容錯

很多公司正在從傳統的批處理架構遷移到實時流架構,在分散式系統如HDFS中靜態檔案和關聯式資料庫在透過事件流得到增強,使用批處理實現的工作任務能夠在流處理中以更低延遲實現。

[img index=1]

這種轉型有許多方式,首先,許多資料集和用例都是基於事件的(比如機器日誌等),其次流處理在某種程度上可以處理更復雜的工作任務,流處理原則上能夠以低延時執行大部分批處理的工作任務,這樣,當流處理能夠處理同樣的工作任務時,幾乎沒有理由再選擇使用Hadoop這樣的批處理框架了。最後,一些新的應用型別諸如處理敏感資料經常需要持續查詢,這些應用只能使用流架構實現。

一個典型的流架構由下面三個元件組成:

[img index=2]
1. 一個模組元件是從各種資料來源收集事件流
2. 一個模組元件整合各種流,使它們可用於直接消費。
3.一個模組元件用來分析消費這些流資料

第一步是從各種資料來源收集事件,事件來自於資料庫,機器產生日誌,事件感測器等,這些事件需要清理 組織化到一箇中心。

第二步,在一箇中心整合各種流,典型工具如Apache Kafka,Kafka提供一個broker功能,以失敗容錯的高可靠性用來收集流 日誌或緩衝資料,以及分發到各種對不同流感興趣的消費者那裡進行分析。

第三步,對流進行真正的分析,比如建立計數器 實現聚合,Map/Reduce之類計算,將各種流Join一起分析等等,提供了資料分析所需的一步到位的高階程式設計。Apache Flink正是這步實現。

[img index=3]

Flink能夠既用來進行批處理又能用來進行流處理,也就是綜合了Hadoop和Storm或Spark Streaming兩者優點,需要了解詳情見:

Real-time stream processing: The next step for Apa

相關文章