?阿里巴巴雙11大屏在峰值期間可以承擔(dān)每秒超過4.72億次的訪問饲常,這是多高的訪問量……為什么學(xué)習(xí)Flink?
這幾年大數(shù)據(jù)的飛速發(fā)展歇拆,出現(xiàn)了很多熱門大數(shù)據(jù)計(jì)算框架择浊,著名的Hadoop伤靠、Storm捣域、Spark,他們都專注于各自的應(yīng)用場景宴合。
Spark掀開了內(nèi)存計(jì)算的先河焕梅,也以內(nèi)存為賭注,贏得了內(nèi)存計(jì)算的飛速發(fā)展卦洽。Spark 的火熱或多或少的掩蓋了其他分布式計(jì)算的系統(tǒng)身影贞言。就像 Flink,也就在這個(gè)時(shí)候默默的發(fā)展著阀蒂。
Flink認(rèn)為有界數(shù)據(jù)集是無界數(shù)據(jù)流的一種特例该窗,所以說有界數(shù)據(jù)集也是一種數(shù)據(jù)流,事件流也是一種數(shù)據(jù)流蚤霞。
在國外一些社區(qū)酗失,有很多人將大數(shù)據(jù)的計(jì)算引擎分成了4 代,當(dāng)然也有很多人不會認(rèn)同争便。
第1代——Hadoop MapReduce
第2代——DAG框架(****
Tez
****) + MapReduce第3代——Spark
第4代——Flink
隨著業(yè)務(wù)場景的復(fù)雜程度增加、實(shí)時(shí)性能要求的提高断医,SparkStreaming微批次準(zhǔn)實(shí)時(shí)計(jì)算在一定程度上滿足不了業(yè)務(wù)需求滞乙,F(xiàn)link在實(shí)時(shí)流計(jì)算的性能尤為顯著奏纪,隨著阿里的廣泛使用,F(xiàn)link已成為當(dāng)前流計(jì)算領(lǐng)域的首選架斩启。
快速入門 Flink 應(yīng)用程序結(jié)構(gòu)主要包含三部分,Source/Transformation/Sink
Source: 數(shù)據(jù)源序调,F(xiàn)link 在流處理和批處理上的 source 大概有 4 類:
基于本地集合的 source
基于文件的 source
基于網(wǎng)絡(luò)套接字的 source
自定義的 source。自定義的 source 常見的有 Apache kafka兔簇、Amazon Kinesis Streams发绢、RabbitMQ、Twitter Streaming API垄琐、Apache NiFi 等边酒,當(dāng)然你也可以定義自己的 source。
Transformation:數(shù)據(jù)轉(zhuǎn)換的各種操作狸窘,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等墩朦,操作很多,可以將數(shù)據(jù)轉(zhuǎn)換計(jì)算成你想要的數(shù)據(jù)翻擒。
Sink:接收器氓涣,F(xiàn)link 將轉(zhuǎn)換計(jì)算后的數(shù)據(jù)發(fā)送的地點(diǎn) ,你可能需要存儲下來陋气,F(xiàn)link 常見的 Sink 大概有如下幾類:
寫入文件劳吠、
打印輸出、
寫入 socket 巩趁、
自定義的 sink 痒玩。自定義的 sink 常見的有 Apache kafka、RabbitMQ晶渠、MySQL凰荚、ElasticSearch、Apache Cassandra褒脯、Hadoop FileSystem 等便瑟,同理你也可以定義自己的 Sink。
Flink批處理入門示例
Flink 做為一款流式計(jì)算框架番川,它可用來做批處理到涂,即處理靜態(tài)的數(shù)據(jù)集、歷史的數(shù)據(jù)集颁督;也可以用來做流處理践啄,即實(shí)時(shí)的處理些實(shí)時(shí)數(shù)據(jù)流,實(shí)時(shí)的產(chǎn)生數(shù)據(jù)流結(jié)果沉御,只要數(shù)據(jù)源源不斷的過來屿讽,F(xiàn)link 就能夠一直計(jì)算下去。
通過flink來讀取本地文件,實(shí)現(xiàn)單詞統(tǒng)計(jì)功能伐谈,把統(tǒng)計(jì)結(jié)果寫入本地文件中烂完,體現(xiàn)flink的批處理。效果如下诵棵,左邊為源文件抠蚣,右邊為統(tǒng)計(jì)結(jié)果
編程步驟:
一、建立maven項(xiàng)目履澳,添加相關(guān)依賴
<properties>
實(shí)現(xiàn)單詞統(tǒng)計(jì)主要代碼
object BathchFromFiles {
運(yùn)行效果圖:
往期精彩
覺得還不錯(cuò)的話歡迎關(guān)注公號:一點(diǎn)IT技術(shù)
"轉(zhuǎn)發(fā)和分享是對作者最大的支持及鼓勵(lì)"