2021年大数据Flink(一):乘风破浪的Flink-Flink概述
目錄
乘風破浪的Flink-Flink概述
實時即未來
一切從Apache開始
富二代Flink
Flink官方介紹
官網(wǎng)地址:
Flink組件棧
???????Flink基石
Checkpoint
State
Time
Window
???????乘風破浪的Flink-Flink概述
實時即未來
如今的我們正生活在新一次的信息革命浪潮中,5G、物聯(lián)網(wǎng)、智慧城市、工業(yè)4.0、新基建……等新名詞層出不窮,唯一不變的就是變化!對于我們所學習的大數(shù)據(jù)來說更是這樣:數(shù)據(jù)產(chǎn)生的越來越快、數(shù)據(jù)量越來越大,數(shù)據(jù)的來源越來越千變?nèi)f化,數(shù)據(jù)中隱藏的價值規(guī)律更是越來越被重視!數(shù)字化時代的未來正在被我們創(chuàng)造!
歷史的發(fā)展從來不會一帆風順,隨著大數(shù)據(jù)時代的發(fā)展,海量數(shù)據(jù)和多種業(yè)務(wù)的實時處理需求激增,比如:實時監(jiān)控報警系統(tǒng)、實時風控系統(tǒng)、實時推薦系統(tǒng)等,傳統(tǒng)的批處理方式和早期的流式處理框架因其自身的局限性,難以在延遲性、吞吐量、容錯能力,以及使用便捷性等方面滿足業(yè)務(wù)日益苛刻的要求。在這種形勢下,Flink 以其獨特的天然流式計算特性和更為先進的架構(gòu)設(shè)計,極大地改善了以前的流式處理框架所存在的問題。
- 擴展閱讀:為什么說流處理即未來?
https://news.qudong.com/article/562521.shtml
一切從Apache開始
Flink 誕生于歐洲的一個大數(shù)據(jù)研究項目 StratoSphere。該項目是柏林工業(yè)大學的一個研究性項目。早期, Flink 是做 Batch 計算的,但是在 2014 年, StratoSphere 里面的核心成員孵化出 Flink,同年將 Flink 捐贈 Apache,并在后來成為 Apache 的頂級大數(shù)據(jù)項目,同時?Flink 計算的主流方向被定位為 Streaming, 即用流式計算來做所有大數(shù)據(jù)的計算,這就是 Flink 技術(shù)誕生的背景。
2014 年 Flink 作為主攻流計算的大數(shù)據(jù)引擎開始在開源大數(shù)據(jù)行業(yè)內(nèi)嶄露頭角。區(qū)別于 Storm、Spark Streaming 以及其他流式計算引擎的是:它不僅是一個高吞吐、低延遲的計算引擎,同時還提供很多高級的功能。比如它提供了有狀態(tài)的計算,支持狀態(tài)管理,支持強一致性的數(shù)據(jù)語義以及支持 基于Event Time的WaterMark對延遲或亂序的數(shù)據(jù)進行處理等
富二代Flink
https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/86117374
隨著人工智能時代的降臨,數(shù)據(jù)量的爆發(fā),在典型的大數(shù)據(jù)的業(yè)務(wù)場景下數(shù)據(jù)業(yè)務(wù)最通用的做
法是:選用批處理的技術(shù)處理全量數(shù)據(jù),采用流式計算處理實時增量數(shù)據(jù)。在絕大多數(shù)的業(yè)務(wù)場景之下,用戶的業(yè)務(wù)邏輯在批處理和流處理之中往往是相同的。但是,用戶用于批處理和流處理的兩套計算引擎是不同的。因此,用戶通常需要寫兩套代碼。毫無疑問,這帶來了一些額外的負擔和成本。阿里巴巴的商品數(shù)據(jù)處理就經(jīng)常需要面對增量和全量兩套不同的業(yè)務(wù)流程問題,所以阿里就在想,我們能不能有一套統(tǒng)一的大數(shù)據(jù)引擎技術(shù),用戶只需要根據(jù)自己的業(yè)務(wù)邏輯開發(fā)一套代碼。這樣在各種不同的場景下,不管是全量數(shù)據(jù)還是增量數(shù)據(jù),亦或者實時處理,一套方案即可全部支持,這就是阿里選擇 Flink 的背景和初衷。
2015 年阿里巴巴開始使用 Flink 并持續(xù)貢獻社區(qū)(阿里內(nèi)部還基于Flink做了一套Blink),2019年1月8日,阿里巴巴以 9000 萬歐元(7億元人民幣)收購了創(chuàng)業(yè)公司 Data Artisans。從此Flink開始了新一輪的乘風破浪!
???????Flink官方介紹
官網(wǎng)地址:
?https://flink.apache.org/
???????Flink組件棧
一個計算框架要有長遠的發(fā)展,必須打造一個完整的 Stack。只有上層有了具體的應(yīng)用,并能很好的發(fā)揮計算框架本身的優(yōu)勢,那么這個計算框架才能吸引更多的資源,才會更快的進步。所以 Flink 也在努力構(gòu)建自己的 Stack。
Flink分層的組件棧如下圖所示:每一層所包含的組件都提供了特定的抽象,用來服務(wù)于上層組件。
各層詳細介紹:
- 物理部署層:Flink 支持本地運行、能在獨立集群或者在被 YARN 管理的集群上運行, 也能部署在云上,該層主要涉及Flink的部署模式,目前Flink支持多種部署模式:本地、集群(Standalone、YARN)、云(GCE/EC2)、Kubenetes。Flink能夠通過該層能夠支持不同平臺的部署,用戶可以根據(jù)需要選擇使用對應(yīng)的部署模式。
- Runtime核心層:Runtime層提供了支持Flink計算的全部核心實現(xiàn),為上層API層提供基礎(chǔ)服務(wù),該層主要負責對上層不同接口提供基礎(chǔ)服務(wù),也是Flink分布式計算框架的核心實現(xiàn)層,支持分布式Stream作業(yè)的執(zhí)行、JobGraph到ExecutionGraph的映射轉(zhuǎn)換、任務(wù)調(diào)度等。將DataSteam和DataSet轉(zhuǎn)成統(tǒng)一的可執(zhí)行的Task Operator,達到在流式引擎下同時處理批量計算和流式計算的目的。
- API&Libraries層:Flink 首先支持了 Scala 和 Java 的 API,Python 也正在測試中。DataStream、DataSet、Table、SQL API,作為分布式數(shù)據(jù)處理框架,Flink同時提供了支撐計算和批計算的接口,兩者都提供給用戶豐富的數(shù)據(jù)處理高級API,例如Map、FlatMap操作等,也提供比較低級的Process Function API,用戶可以直接操作狀態(tài)和時間等底層數(shù)據(jù)。
- 擴展庫:Flink 還包括用于復雜事件處理的CEP,機器學習庫FlinkML,圖處理庫Gelly等。Table 是一種接口化的 SQL 支持,也就是 API 支持(DSL),而不是文本化的SQL 解析和執(zhí)行。
???????Flink基石
Flink之所以能這么流行,離不開它最重要的四個基石:Checkpoint、State、Time、Window。
Checkpoint
這是Flink最重要的一個特性。
Flink基于Chandy-Lamport算法實現(xiàn)了一個分布式的一致性的快照,從而提供了一致性的語義。
Chandy-Lamport算法實際上在1985年的時候已經(jīng)被提出來,但并沒有被很廣泛的應(yīng)用,而Flink則把這個算法發(fā)揚光大了。
Spark最近在實現(xiàn)Continue streaming,Continue streaming的目的是為了降低處理的延時,其也需要提供這種一致性的語義,最終也采用了Chandy-Lamport這個算法,說明Chandy-Lamport算法在業(yè)界得到了一定的肯定。
https://zhuanlan.zhihu.com/p/53482103
State
提供了一致性的語義之后,Flink為了讓用戶在編程時能夠更輕松、更容易地去管理狀態(tài),還提供了一套非常簡單明了的State API,包括里面的有ValueState、ListState、MapState,近期添加了BroadcastState,使用State API能夠自動享受到這種一致性的語義。
Time
除此之外,Flink還實現(xiàn)了Watermark的機制,能夠支持基于事件的時間的處理,能夠容忍遲到/亂序的數(shù)據(jù)。
Window
另外流計算中一般在對流數(shù)據(jù)進行操作之前都會先進行開窗,即基于一個什么樣的窗口上做這個計算。Flink提供了開箱即用的各種窗口,比如滑動窗口、滾動窗口、會話窗口以及非常靈活的自定義的窗口。
總結(jié)
以上是生活随笔為你收集整理的2021年大数据Flink(一):乘风破浪的Flink-Flink概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年大数据Spark(五十三):S
- 下一篇: 2021年大数据Flink(二):Fli