Flink學習筆記 一(flink入門)
1.我們通常將資料分成無界資料集和有界資料集。
在我們的生活當中,只要還在持續不斷的產生或者變化,這樣的資料集我們都說它是無界資料集。
2.我們通常將計算方式分成兩種:
第一種是實時的,我們也稱之為流式處理
第二種是離線的,我們也稱之為批處理
這個兩種計算方式在某種意義上是可以相互替代的,只是選擇是否最佳的問題。
例如我們可以不停的呼叫批處理任務來處理流式的資料,也可以通過調整流處理的視窗時間來實現批處理。
Flink就是一個處理無窮資料集的流式運算模型 。
Flink能夠提供準確的結果,甚至在出現無序或者延遲載入的資料的情況下。
它是狀態化的容錯的,同時在維護一次完整的的應用狀態時,能無縫修復錯誤。
Flink支援流式計算和帶有事件時間語義的視窗。事件時間機制使得那些事件無序到達甚至延遲到達的資料流能夠計算出精確的結果。
Flink的容錯能力是輕量級的,允許系統保持高併發,同時在相同時間內提供強一致性保證。Flink以零資料丟失的方式從故障中恢復,但沒有考慮可靠性和延遲之間的折衷。
Flink能滿足高併發和低延遲(計算大量資料很
Savepoints
Flink儲存點提供了一個狀態化的版本機制,使得能以無丟失狀態和最短停機時間的方式更新應用或者回退歷史資料。快)。
部署模式
能在獨立組成叢集或者在被YARN或Mesos管理的叢集上執行。
執行時
Flink的核心是分散式流式資料引擎,意味著資料以一次一個事件的形式被處理,這跟批次處理有很大不同。這個保證了上面說的那些Flink彈性和高效能的特性。
API
Flink有四個主要的API
DataStream API適合用於那些實現在資料流上轉換的程式。(例如:過濾,更新狀態,視窗定義,聚合)
DataSet API適合用於那些實現在資料流上轉換的程式(例如:過濾,對映,連線,分組)
Table API適合於關係流和批處理,能輕鬆嵌入Flink的 DataSet API 和 DataStream API 的類SQL表示式的語言(Java和Scala)。
Streaming SQL 允許在流和多表上執行SQL查詢。
從基本的架構來看,Flink分為資料來源,轉化,接收器(sink)。
總而言之,Apache Flink是一個優秀的流式資料處理框架。