Flink 數據集類型

目錄

有界數據集

無界數據集

統一數據處理


現實世界中,所有的數據都是以流式的形態產生的,不管是哪裏產生的數據,在產生的過程中都是一條條地生成,最後經過了存儲和轉換處理,形成了各種類型的數據集。如下圖所示,根據現實的數據產生方式和數據產生是否含有邊界具有起始點和終止點)角度,將數據分爲兩種類型的數據集,一種是有界數據集,另外一種是無界數據集

有界數據集

有界數據集具有時間邊界,在處理過程中數據一定會在某個時間範圍內起始和結束,有可能是一分鐘,也有可能是一天內的交易數據。對有界數據集的數據處理方式被稱爲批計算Batch Processing),例如將數據從 RDBMS或文件系統等系統中讀取出來,然後在分佈式系統內處理,最後再將處理結果寫入存儲介質中,整個過程就被稱爲批處理過程。而針對批數據處理,目前業界比較流行的分佈式批處理框架有 Apache Hadoop和 Apache Spark等。

無界數據集

對於無界數據集,數據從開始生成就一直持續不斷地產生新的數據,因此數據是沒有邊界的,例如服務器的日誌、傳感器信號數據等。和批量數據處理方式對應,對無界數據集的數據處理方式被稱爲流式數據處理,簡稱爲流處理(Streaming Process)。可以看出,流式數據處理過程實現複雜度會更高,因爲需要考慮處理過程中數據的順序錯亂,以及系統容錯等方面的問題,因此流處理需要藉助專門的流數據處理技術。目前業界的Apache Storm、Spark Streaming、Apache Flink等分佈式計算引擎都能不同程度地支持處理流式數據。

統一數據處理

有界數據集和無界數據集只是一個相對的概念,主要根據時間的範圍而定,可以認爲一段時間內的無界數據集其實就是有界數據集,同時有界數據也可以通過一些方法轉換爲無界數據。例如系統一年的訂單交易數據,其本質上應該是有界的數據集,可是當我們把它一條一條按照產生的順序發送到流式系統,通過流式系統對數據進行處理,在這種情況下可以認爲數據是相對無界的。對於無界數據也可以拆分成有界數據進行處理,例如將系統產生的數據接入到存儲系統,按照年或月進行切割,切分成不同時間長度的有界數據集,然後就可以通過批處理方式對數據進行處理。從以上分析我們可以得出結論:有界數據和無界數據其實是可以相互轉換的。有了這樣的理論基礎,對於不同的數據類型,業界也提出了不同的能夠統一數據處理的計算框架。
目前在業界比較熟知的開源大數據處理框架中,能夠同時支持流式計算和批量計算比較典型的代表分別爲Apache Spark和Apache Flink兩套框架。其中 Spark通過批處理模式來統一處理不同類型的數據集,對於流數據是將數據按照批次切分成微批(有界數據集)來進行處理。Flink則從另外一個角度出發,通過流處理模式來統一處理不同類型的數據集。Flink用比較符合數據產生的規律方式處理流式數據,對於有界數據可以轉換成無界數據統一進行流式,最終將批處理和流處理統一在一套流式引擎中,這樣用戶就可以使用一套引擎進行批計算和流計算的任務。
前面已經提到用戶可能需要通過將多種計算框架並行使用來解決不同類型的數據處理,例如用戶可能使用Flink作爲流計算的引擎,使用 Spark或者 MapReduce作爲批計算的引擎,這樣不僅增加了系統的複雜度,也增加了用戶學習和運維的成本。而Flink作爲一套新興的分佈式計算引擎,能夠在統一平臺中很好地處理流式任務和批量任務,同時使用流計算模式更符合數據產生的規律,相信 Flink會在未來成爲衆多大數據處理引擎的一顆明星。


 ----關注公衆號,獲取更多內容----

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章