大數(shù)據(jù)Apache Flink原理介紹
? ? 大數(shù)據(jù)時代Spark的快速發(fā)展的同時,或許我們也該為 Flink 的發(fā)展速度點個贊。
Apache Flink是由Apache軟件基金會內(nèi)的Apache Flink社區(qū)基于Apache許可證2.0開發(fā)的,F(xiàn)link 是一個針對流數(shù)據(jù)和批數(shù)據(jù)的分布式處理引擎。它主要是由 Java 代碼實現(xiàn)。目前主要還是依靠開源社區(qū)的貢獻而發(fā)展。
該項目已有超過100位代碼提交者和超過460貢獻者。


概述一下Apache Flink?:
1.簡介:
Apache Flink?是一個框架和分布式處理引擎,用于在無邊界和有邊界數(shù)據(jù)流上進行有狀態(tài)的計算。
Flink 能在所有常見集群環(huán)境中運行,并能以內(nèi)存速度和任意規(guī)模進行計算。Flink 集成了所有常見的集群資源管理器,例如?Hadoop YARN、?Apache Mesos?和?Kubernetes,但同時也可以作為獨立集群運行。特點如下:
1)無邊界:數(shù)據(jù)流有開始沒有結(jié)束,持續(xù)處理到來的數(shù)據(jù)(實時處理)
2)有邊界:數(shù)據(jù)的批處理(如等待一定量的數(shù)據(jù)到達后進行處理、存儲后處理)
3)有狀態(tài):處理后一個數(shù)據(jù)時會用到之前處理過的數(shù)據(jù)的特點,該特點即為狀態(tài),需要保存。任務(wù)的狀態(tài)始終保留在內(nèi)存中,如果狀態(tài)大小超過可用內(nèi)存,則會保存在能高效訪問的磁盤數(shù)據(jù)結(jié)構(gòu)中。
2.Flink狀態(tài)特點
????????1)多種狀態(tài)基礎(chǔ)類型:多種狀態(tài)基礎(chǔ)類型,例如原子值(value),列表(list)以及映射(map)。
2)插件化的State Backend:State Backend 負責(zé)管理應(yīng)用程序狀態(tài),并在需要的時候進行 checkpoint??梢詫顟B(tài)存在內(nèi)存或者?RocksDB。RocksDB 是一種高效的嵌入式、持久化鍵值存儲引擎。Flink 也支持插件式的自定義 state backend 進行狀態(tài)存儲。
3)精確一次語義:checkpoint 和故障恢復(fù)算法保證了故障發(fā)生后應(yīng)用狀態(tài)的一致性。
4)超大數(shù)據(jù)量狀態(tài):利用其異步以及增量式的 checkpoint 算法,存儲數(shù) TB 級別的應(yīng)用狀態(tài)。
5)可彈性伸縮的應(yīng)用:Flink 能夠通過在更多或更少的工作節(jié)點上對狀態(tài)進行重新分布,支持有狀態(tài)應(yīng)用的分布式的橫向伸縮。
3.Flink時間語義
1)事件時間模式:使用事件時間語義的流處理應(yīng)用根據(jù)事件本身自帶的時間戳進行結(jié)果的計算。因此,無論處理的是歷史記錄的事件還是實時的事件,事件時間模式的處理總能保證結(jié)果的準確性和一致性。如,用戶點擊某一頁面后一個小時內(nèi)再次返回該頁面的次數(shù),此時使用事件時間。
2)Watermark 支持:衡量事件時間進展,是一種平衡處理延時和完整性的靈活機制。如處理數(shù)據(jù)的順序(判斷是否等待更早的數(shù)據(jù)到來)可以根據(jù)水印判斷。
3)遲到數(shù)據(jù)處理:當以帶有 watermark 的事件時間模式處理數(shù)據(jù)流時,在計算完成之后仍會有相關(guān)數(shù)據(jù)到達。這樣的事件被稱為遲到事件。Flink 提供了多種處理遲到數(shù)據(jù)的選項,如將這些數(shù)據(jù)重定向到旁路輸出(side output)或者更新之前完成計算的結(jié)果。
4)處理時間模式:處理時間模式根據(jù)處理引擎的機器時鐘觸發(fā)計算,一般適用于有著嚴格的低延遲需求,并且能夠容忍近似結(jié)果的流處理應(yīng)用。如處理11:00-12:00內(nèi)的頁面點擊數(shù)。

4.分層API
根據(jù)抽象程度分層,提供了三種不同的 API。每一種 API 在簡潔性和表達力上有著不同的側(cè)重,并且針對不同的應(yīng)用場景。


在今天 尚學(xué)堂 為大家準備一套“大數(shù)據(jù)Flink”實戰(zhàn)項目課程,本套課程是由尚學(xué)堂老師在線課程錄制,該課程花費三天時間為大家講述
