2023-181,#每日一悟每日進步##大資料#
大資料流計算工具摘錄學習:
1、Storm
計算模型稱為Topology,類似Map-Reduce,不同在于Topology會永遠執行下去。
Topology由Spout和Bold組成的有向無環圖,每個節點都會對流上的資料進行一定的處理,然後傳遞給後續節點做下一步處理。
Spout是Stream的起點,是産生Tuple的源頭,它會對某類輸入源如Kafka,把資料封裝成Tuple的形式吐給後續的一個或多個Bolt進行處理。
Bolt是Topology中進行資料處理的單元,可以過濾、清洗、轉換、聚合和關聯各種操作。理想情況下,每一個Bolt對于Tuple的處理應該是一個簡單的邊界清晰的操作。
Stream指一個沒有邊界的、永遠向前流動的資料流。
Tuple是Storm中對資料的統一封裝格式,可以包含多個預定義的基本類型字段。
2、Spark Streaming
以Micro-batch方式工作,實時性比Storm差。
(1)DStream程式設計模型
将極短時間間隔(Batch Duration)内的資料組織成一個RDD,流上的各種操作都是以RDD為基本機關進行的。RDD的計算分為Transformation和action兩大類。
支援視窗操作機制,視窗的大小和移動的步幅必須是Batch Duration的整數倍。
(2)Structured Streaming程式設計模型
把資料流當做一個沒有邊界的資料表來對待,可以在流上使用Spark SQL進行流處理,大大降低了流計算的技術門檻。流上的計算會被轉化為資料表上的查詢,每次的查詢結果會作為一個新的“資料表”,後續的操作将在新的資料表上執行。
同樣支援視窗操作,新的視窗操作可以基于“事件時間”,而不再是資料進入流的時間,實用性更高。
從Spark 2.3開始,支援stream-stream Join,包括内關聯和外關聯。
3、Flink
程式設計模型與Spark DStream的API類似,流的起點往往是資料的輸入源,稱為Source,針對Stream的操作稱為Transformation,流的終點是資料的輸出目的地,稱為Sink。
支援視窗操作,且細化時間為事件時間(事件建立的時間)、攝取時間(事件進入Flink資料流的時間)、處理時間(每一個操作在執行的本地時間)。
整體架構從下到上分别為:Stateful Stream Processing、DataStream/DataSet API、Table API、SQL。
Flink以流計算核心為基礎,将資料處理能力從流計算拓展到了批處理。