【尚硅谷】Flink1.13實(shí)戰(zhàn)教程(涵蓋所有flink-Java知識(shí)點(diǎn))


- 和Spark一樣都是大數(shù)據(jù)處理框架/引擎。Flink是流處理,Spark是批處理。





流處理架構(gòu)的發(fā)展演變

不同于事務(wù)處理架構(gòu)(OLTP)將數(shù)據(jù)存儲(chǔ)在傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)(硬盤)中,有狀態(tài)的流式處理將數(shù)據(jù)用本地狀態(tài)表示,即存儲(chǔ)在內(nèi)存里,則讀取和寫入的時(shí)間、計(jì)算資源開銷都會(huì)極大程度降低。


這種有狀態(tài)流式處理模型在分布式集群部署時(shí)有可能會(huì)產(chǎn)生數(shù)據(jù)的亂序。因此提出了lambda架構(gòu)。
(第二代流處理架構(gòu))

同時(shí)使用批處理和流處理兩套系統(tǒng)
數(shù)據(jù)在實(shí)時(shí)更新,但數(shù)據(jù)不一定是最終結(jié)果。
由于兩套系統(tǒng)api不同,會(huì)有維護(hù)困難的缺陷。

從傳統(tǒng)流處理架構(gòu)中改進(jìn)出一套具有批處理器特性的新的流處理架構(gòu),F(xiàn)link是典型。
Flink 引入了時(shí)間語(yǔ)義的概念,保證了結(jié)果的準(zhǔn)確。主要提供的時(shí)間語(yǔ)義有事件時(shí)間和處理時(shí)間。
Flink在不同架構(gòu)中的運(yùn)用

- 事件驅(qū)動(dòng)型應(yīng)用,多用kafka生成事件日志
- 數(shù)據(jù)分析型應(yīng)用,比較流行的實(shí)時(shí)數(shù)倉(cāng)就是用Flink搭建的。
- 數(shù)據(jù)管道型應(yīng)用。


Spark提出了內(nèi)存計(jì)算的概念 ,劃時(shí)代的大數(shù)據(jù)處理框架。
Spark四大組件:
- SparkStreaming:流式計(jì)算
- SparkSQL:操作結(jié)構(gòu)化數(shù)據(jù)
- GraphX:面向圖計(jì)算的框架和算法庫(kù)
- MLlib:機(jī)器學(xué)習(xí)算法庫(kù)
是一個(gè)統(tǒng)一的分布式大數(shù)據(jù)處理平臺(tái)。
二者區(qū)別:Spark底層基于批(微批次)處理,F(xiàn)link底層基于流處理。
因?yàn)镾park仍然有攢批的過(guò)程,所以Spark的流處理被稱為偽實(shí)時(shí)。
Spark認(rèn)為流是特殊的批。
Flink認(rèn)為批數(shù)據(jù)是特殊的流——有界(bounded)的流。
Spark更加適合海量數(shù)據(jù)的批處理,F(xiàn)link更加適合流數(shù)據(jù)的處理。





引入Flink、日志管理相關(guān)依賴

