




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Flink簡介Flink簡介Flink是一個分布式大數(shù)據(jù)處理引擎和框架,用于在無邊界和有邊界的數(shù)據(jù)流上進(jìn)行有狀態(tài)的計算。Flink是一個為了提升流處理性能而創(chuàng)建的平臺,它非常適用于各種需要低延遲(微秒到毫秒級)的實(shí)時數(shù)據(jù)處理場景。Flink簡介阿里巴巴的實(shí)時計算平臺在“雙十一”期間能平穩(wěn)運(yùn)行,計算峰值可達(dá)到每秒40億條記錄,數(shù)據(jù)量可達(dá)到每秒7TB。該計算平臺就采用了Flink流處理技術(shù).Flink的特點(diǎn)是實(shí)現(xiàn)了真正的實(shí)時流處理,支持低延遲、高吞吐量和exactly-once語義。Spark和Flink的比較Flink的分層抽象APIFlink根據(jù)抽象程度分層,提供了不同級別的API。每個層次的API在簡潔性和表達(dá)力上有不同的側(cè)重點(diǎn),并且針對不同的應(yīng)用場景。Flink的分層抽象APIFlink為流處理和批處理提供了兩套強(qiáng)大的DataStreamAPI和DataSetAPI,以滿足流處理和批處理中的各種場景需求,并在更高層級提供了一種關(guān)系型的TableAPI和SQLAPI來實(shí)現(xiàn)FlinkAPI的流處理與批處理的統(tǒng)一。Flink應(yīng)用場景Flink已廣泛應(yīng)用于實(shí)時ETL,如實(shí)時數(shù)倉、商業(yè)數(shù)據(jù)即席分析、特征工程和在線數(shù)據(jù)服務(wù)等對穩(wěn)定性要求比較高的場景。Flink簡介Flink對以下場景有非常好的支持1.實(shí)時智能推薦2.復(fù)雜事件處理3.實(shí)時欺詐檢測4.實(shí)時數(shù)倉與ETL5.流數(shù)據(jù)分析6.實(shí)時報表分析Flink簡介Flink軟件棧和程序Flink軟件棧Flink軟件棧核心是DistributedStreamingDataflow,用于執(zhí)行數(shù)據(jù)流處理程序。Flink運(yùn)行時程序是一個通過有狀態(tài)的算子連接的數(shù)據(jù)流的有向無環(huán)圖(DAG),對上層提供有限數(shù)據(jù)流的DataSetAPI和無限數(shù)據(jù)流的DataStreamAPI。Flink軟件棧部署層主要涉及Flink的部署方式。Runtime核心層主要負(fù)責(zé)為上層不同接口提供基礎(chǔ)服務(wù)。API&Libraries層提供支持流處理和批處理的豐富API。Flink程序執(zhí)行流程當(dāng)一個Flink程序的執(zhí)行時,它會被映射為StreamingDataflow。一個StreamingDataflow是由一組Stream和TransformationOperator組成的,它類似于一個DAG,在啟動時從一個或多個SourceOperator開始,結(jié)束于一個或多個SinkOperator。Flink程序執(zhí)行流程Flink對數(shù)據(jù)的處理被抽象為以下三步。(1)接收數(shù)據(jù):接收一個或多個數(shù)據(jù)源。(2)處理數(shù)據(jù):執(zhí)行若干用戶需要的轉(zhuǎn)換算子。(3)輸出處理結(jié)果:將轉(zhuǎn)換后的結(jié)果輸出。Flink程序執(zhí)行流程Flink運(yùn)行時架構(gòu)Flink運(yùn)行時架構(gòu)Flink集群主要由三部分組成:JobManager、TaskManager和客戶端(Client),這三者各自運(yùn)行在獨(dú)立的Java虛擬機(jī)(JVM)進(jìn)程中。當(dāng)Flink集群啟動時,至少會啟動一個JobManager和一個TaskManager,但根據(jù)集群規(guī)模和作業(yè)需求,可以啟動多個TaskManager。客戶端將任務(wù)提交給JobManager,JobManager將任務(wù)拆分成Task并調(diào)度到各個TaskManager中執(zhí)行,最后TaskManager將Task執(zhí)行的情況匯報給JobManager。Flink運(yùn)行時架構(gòu)Flink運(yùn)行時架構(gòu)Flink提供了專門的客戶端(Client)用于提交作業(yè)(Job)到集群中。在服務(wù)端,F(xiàn)link采用了分布式的主從架構(gòu),其中JobManager作為主節(jié)點(diǎn),而TaskManager作為從節(jié)點(diǎn)或工作節(jié)點(diǎn)。JobManager負(fù)責(zé)管理計算資源(TaskManager)和任務(wù)的調(diào)度,同時創(chuàng)建檢查點(diǎn)(Checkpoint)以進(jìn)行容錯處理;TaskManager則負(fù)責(zé)實(shí)際執(zhí)行SubTask。Flink運(yùn)行時架構(gòu)這種主從架構(gòu)的設(shè)計使得Flink能夠高效地處理大規(guī)模數(shù)據(jù)流,并提供了高可用性和容錯功能,通過檢查點(diǎn)機(jī)制來確保在故障發(fā)生時能夠恢復(fù)作業(yè)的狀態(tài),并從故障點(diǎn)繼續(xù)執(zhí)行,從而保證了數(shù)據(jù)的可靠性和一致性。Flink任務(wù)提交流程Flink不僅可以部署在包括YARN、Mesos、Kubernetes在內(nèi)的多種資源管理框架上,還支持在裸機(jī)集群上獨(dú)立部署,同時能輕松部署在云端。在不同的部署環(huán)境下,F(xiàn)link任務(wù)的提交流程可能會有所不同,以滿足特定的環(huán)境和需求。在獨(dú)立模式(Standalone)下,有會話(Session)模式和應(yīng)用(Application)模式兩種部署方式。在YARN集群模式下,有會話模式、單作業(yè)(Per-Job)模式和應(yīng)用模式3種部署方式。Flink時間處理機(jī)制Flink時間處理機(jī)制Flink的無限數(shù)據(jù)流是一個持續(xù)的過程,而時間是判斷業(yè)務(wù)狀態(tài)是否滯后,數(shù)據(jù)處理是否及時的重要依據(jù)。Flink中針對Stream流事件中的Time分為EventTime、IngestionTime、ProcessingTime。Flink時間處理機(jī)制EventTime(事件時間)是指每個事件在其設(shè)備上發(fā)生的時間,通常由事件中的時間戳來描述。Flink時間處理機(jī)制IngestionTime(接收時間)是指事件進(jìn)入Flink(FlinkSource)的時間,是由SourceOperator自動根據(jù)當(dāng)前時間生成的,每個事件將進(jìn)入Flink時的時間作為時間戳。ProcessingTime(處理時間)是指事件被處理時機(jī)器當(dāng)前的系統(tǒng)時間,與機(jī)器相關(guān)。Flink時間窗口Flink流數(shù)據(jù)處理過程中經(jīng)常用到窗口(Window)的概念。基于業(yè)務(wù)數(shù)據(jù)方面的考慮,F(xiàn)link支持兩種類型的窗口:一種是基于時間的窗口,即TimeWindow;另一種是基于輸入數(shù)據(jù)數(shù)量的窗口,即CountWindow。Flink時間窗口TimeWindow可以分為3種類型,分別是滾動窗口(TumblingWindow,窗口和窗口之間沒有數(shù)據(jù)重疊)、滑動窗口(SlidingWindow,會出現(xiàn)數(shù)據(jù)重疊)和會話窗口(SessionWindow,由不活動的間隙打斷)。
滾動時間窗口Flink時間窗口滑動窗口(SlidingWindow)是在滾動時間窗口的基礎(chǔ)上增加了滑動步長(SlideSize),且允許窗口之間的數(shù)據(jù)發(fā)生重疊。Flink時間窗口滾動數(shù)量窗口(TrublingCountWindow)會話窗口(SessionWindow)Flink時間窗口Flink時間窗口Flink時間窗口Flink時間窗口Flink時間處理機(jī)制Flink狀態(tài)-StateState是Flink中一個非常基本且重要的概念,State的字面意義為狀態(tài)。Flink支持有狀態(tài)計算。無狀態(tài)是指每個事件都是獨(dú)立的,各個事件之間沒有關(guān)聯(lián),輸出結(jié)果只與當(dāng)前事件有關(guān)聯(lián)。比如電子圍欄報警系統(tǒng),當(dāng)觸發(fā)設(shè)置的電子圍欄時就進(jìn)行告警。有狀態(tài)是指當(dāng)前的事件與之前的事件狀態(tài)有關(guān)聯(lián),輸出結(jié)果需要結(jié)合之前各個事件的輸出結(jié)果。比如,淘寶“雙十一”活動實(shí)時戰(zhàn)報的實(shí)時總成交金額播報等。Flink狀態(tài)-State有狀態(tài)計算是指在程序計算過程中,程序內(nèi)部存儲計算會產(chǎn)生中間結(jié)果,并且會被提供給后續(xù)的算子進(jìn)行計算,如Flink中的sum和reduce算子。Flink狀態(tài)-StateEventTime(事件時間)是指每個事件在其設(shè)備上發(fā)生的時間,通常由事件中的時間戳來描述。Flink狀態(tài)-State引入背景Flink提供了State來存放計算過程中計算節(jié)點(diǎn)的中間結(jié)果或元數(shù)據(jù)屬性等,并提供了Exactly-Once語義。由于流計算大多數(shù)的場景都是增量計算,數(shù)據(jù)需要逐條處理,當(dāng)前結(jié)果都是基于上一次的計算結(jié)果進(jìn)行處理的,這就要求將上一次的計算結(jié)果進(jìn)行存儲持久化。Flink容錯機(jī)制Flink屬于分布式數(shù)據(jù)流處理引擎,而分布式數(shù)據(jù)流處理引擎必須面對的問題就是故障,例如進(jìn)程被強(qiáng)制關(guān)閉、服務(wù)器宕機(jī)、網(wǎng)絡(luò)連接中斷等。當(dāng)出現(xiàn)以上故障時,會造成Flink作業(yè)意外失敗,需要在重啟后進(jìn)行恢復(fù),要想State的值不從頭開始計算,就需要進(jìn)行容錯處理。為了保證計算過程中出現(xiàn)異常時可以進(jìn)行容錯處理,需要將中間的計算結(jié)果State存儲起來。Flink容錯機(jī)制State使用Checkpoint(類似于Windows系統(tǒng)發(fā)生死機(jī)等問題時,恢復(fù)系統(tǒng)到某個時間點(diǎn)的恢復(fù)點(diǎn))機(jī)制進(jìn)行容錯處理,可以理解為從Checkpoint(檢查點(diǎn))處恢復(fù)。Flink為了進(jìn)行實(shí)時容錯處理,將中間結(jié)果定期存儲起來,在出現(xiàn)故障時將系統(tǒng)重置為正確的狀態(tài),這種定期觸發(fā)中間存儲結(jié)果的機(jī)制稱為CheckPointing。Flink容錯機(jī)制-Checkpoint
Checkpoint是Flink用來從故障中恢復(fù)的容錯機(jī)制。它可以根據(jù)周期性的基于Stream中各個Operator的狀態(tài)配置來生成快照,從而將這些狀態(tài)數(shù)據(jù)定期、持久化地存儲起來。當(dāng)作業(yè)出現(xiàn)意外崩潰的情況時,通常需要和錯誤恢復(fù)機(jī)制(作業(yè)重啟策略或Failover策略)配合使用。Flink容錯機(jī)制-Checkpoint
Flink作業(yè)會根據(jù)作業(yè)重啟策略自動重啟并通過最近一個成功的快照(Checkpoint)來恢復(fù)狀態(tài)。合適的作業(yè)重啟策略可以減少作業(yè)不可用時間并避免人工介入故障處理的運(yùn)維成本,因此對Flink作業(yè)穩(wěn)定性來說有著舉足輕重的作用。Flink的
Exactly-Once語義數(shù)據(jù)流處理引擎經(jīng)常被廣泛討論的特征是處理語義,而Exactly-Once語義是其中最受歡迎的。很多數(shù)據(jù)流處理引擎都聲稱它們提供Exactly-Once語義。同時,Exactly-Once語義是Flink、Spark等流處理系統(tǒng)的核心特性之一,那么Exactly-Once語義究竟是什么呢?流處理語義要求機(jī)制保證在任務(wù)或數(shù)據(jù)出錯時,數(shù)據(jù)是正確且有效的。Flink的Exactly-Once語義Exactly-Once(恰好一次):Exactly-Once也被稱為精確一次,表示一條數(shù)據(jù)從被接收到后續(xù)被處理成功,只會被正確地處
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民事調(diào)解協(xié)議員協(xié)議書
- 老師工作協(xié)議書
- 自行保存協(xié)議書
- 股東套餐協(xié)議書
- 美式和平協(xié)議書
- 自愿捐卵協(xié)議書
- 管轄范圍協(xié)議書
- 綠化清理協(xié)議書
- 股票抵債協(xié)議書
- 美國隱私協(xié)議書
- 馬克思主義基本原理介紹課件
- 刑事附帶民事授權(quán)委托書(6篇)
- 23CG60 預(yù)制樁樁頂機(jī)械連接(螺絲緊固式)
- 自殺風(fēng)險的評估與記錄-生
- 廉潔心得體會500字(5篇)
- 30th燃煤蒸汽鍋爐煙氣除塵脫硫系統(tǒng)設(shè)計畢業(yè)設(shè)計
- 初中音樂-歌曲《天之大》教學(xué)課件設(shè)計
- 新融合大學(xué)英語(III)智慧樹知到答案章節(jié)測試2023年江西理工大學(xué)
- 11ZJ401樓梯欄桿安裝圖集
- 五種常見擋土墻的設(shè)計計算實(shí)例
- 2023-2024學(xué)年江蘇省靖江市小學(xué)數(shù)學(xué)五年級下冊期末模考試卷
評論
0/150
提交評論