2021年大数据Flink(十):流处理相关概念
目錄
流處理相關概念
數據的時效性
???????流處理和批處理
???????流批一體API
DataStream API 支持批執行模式
API
編程模型
???????流處理相關概念
數據的時效性
日常工作中,我們一般會先把數據存儲在表,然后對表的數據進行加工、分析。既然先存儲在表中,那就會涉及到時效性概念。
如果我們處理以年,月為單位的級別的數據處理,進行統計分析,個性化推薦,那么數據的的最新日期離當前有幾個甚至上月都沒有問題。但是如果我們處理的是以天為級別,或者一小時甚至更小粒度的數據處理,那么就要求數據的時效性更高了。比如:對網站的實時監控、對異常日志的監控,這些場景需要工作人員立即響應,這樣的場景下,傳統的統一收集數據,再存到數據庫中,再取出來進行分析就無法滿足高時效性的需求了。
?
???????流處理和批處理
https://ci.apache.org/projects/flink/flink-docs-release-1.12/learn-flink/
?
?
?
?
- Batch Analytics,右邊是 Streaming Analytics。批量計算: 統一收集數據->存儲到DB->對數據進行批量處理,就是傳統意義上使用類似于 Map Reduce、Hive、Spark Batch 等,對作業進行分析、處理、生成離線報表
- Streaming Analytics 流式計算,顧名思義,就是對數據流進行處理,如使用流式分析引擎如 Storm,Flink 實時處理分析數據,應用較多的場景如實時大屏、實時報表。
?
?
???????流批一體API
DataStream API 支持批執行模式
Flink 的核心 API 最初是針對特定的場景設計的,盡管 Table API / SQL 針對流處理和批處理已經實現了統一的 API,但當用戶使用較底層的 API 時,仍然需要在批處理(DataSet API)和流處理(DataStream API)這兩種不同的 API 之間進行選擇。鑒于批處理是流處理的一種特例,將這兩種 API 合并成統一的 API,有一些非常明顯的好處,比如:
?
- 可復用性:作業可以在流和批這兩種執行模式之間自由地切換,而無需重寫任何代碼。因此,用戶可以復用同一個作業,來處理實時數據和歷史數據。
- 維護簡單:統一的 API 意味著流和批可以共用同一組 connector,維護同一套代碼,并能夠輕松地實現流批混合執行,例如 backfilling 之類的場景。
?
考慮到這些優點,社區已朝著流批統一的 DataStream API 邁出了第一步:支持高效的批處理(FLIP-134)。從長遠來看,這意味著 DataSet API 將被棄用(FLIP-131),其功能將被包含在 DataStream API 和 Table API / SQL 中。
?
API
Flink提供了多個層次的API供開發者使用,越往上抽象程度越高,使用起來越方便;越往下越底層,使用起來難度越大
?
注意:在Flink1.12時支持流批一體,DataSetAPI已經不推薦使用了,所以課程中除了個別案例使用DataSet外,后續其他案例都會優先使用DataStream流式API,既支持無界數據處理/流處理,也支持有界數據處理/批處理!當然Table&SQL-API會單獨學習
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/batch/
https://developer.aliyun.com/article/780123?spm=a2c6h.12873581.0.0.1e3e46ccbYFFrC
?
?
https://ci.apache.org/projects/flink/flink-docs-release-1.12/dev/datastream_api.html
?
編程模型
Flink 應用程序結構主要包含三部分,Source/Transformation/Sink,如下圖所示:
?
?
總結
以上是生活随笔為你收集整理的2021年大数据Flink(十):流处理相关概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Flink(九):Fli
- 下一篇: 2021年大数据Flink(十一):流批