介紹一下什么是Apache Flink

介紹一下什么是Apache Flink

Apache Flink介紹:

Apache Flink 是一個(gè)框架和分布式處理引擎,用于在無(wú)邊界和有邊界數(shù)據(jù)流上進(jìn)行有狀態(tài)的計(jì)算。Flink 能在所有常見(jiàn)集群環(huán)境中運(yùn)行,并能以內(nèi)存速度和任意規(guī)模進(jìn)行計(jì)算。

(推薦教程:apache

接下來(lái),我們來(lái)介紹一下 Flink 架構(gòu)中的重要方面。

處理無(wú)界和有界數(shù)據(jù)

任何類型的數(shù)據(jù)都可以形成一種事件流。信用卡交易、傳感器測(cè)量、機(jī)器日志、網(wǎng)站或移動(dòng)應(yīng)用程序上的用戶交互記錄,所有這些數(shù)據(jù)都形成一種流。

數(shù)據(jù)可以被作為?無(wú)界 或者?有界 流來(lái)處理。

1.無(wú)界流?有定義流的開(kāi)始,但沒(méi)有定義流的結(jié)束。它們會(huì)無(wú)休止地產(chǎn)生數(shù)據(jù)。無(wú)界流的數(shù)據(jù)必須持續(xù)處理,即數(shù)據(jù)被攝取后需要立刻處理。我們不能等到所有數(shù)據(jù)都到達(dá)再處理,因?yàn)檩斎胧菬o(wú)限的,在任何時(shí)候輸入都不會(huì)完成。處理無(wú)界數(shù)據(jù)通常要求以特定順序攝取事件,例如事件發(fā)生的順序,以便能夠推斷結(jié)果的完整性。

2.有界流?有定義流的開(kāi)始,也有定義流的結(jié)束。有界流可以在攝取所有數(shù)據(jù)后再進(jìn)行計(jì)算。有界流所有數(shù)據(jù)可以被排序,所以并不需要有序攝取。有界流處理通常被稱為批處理。

介紹一下什么是Apache Flink

Apache Flink 擅長(zhǎng)處理無(wú)界和有界數(shù)據(jù)集?精確的時(shí)間控制和狀態(tài)化使得 Flink 的運(yùn)行時(shí)(runtime)能夠運(yùn)行任何處理無(wú)界流的應(yīng)用。有界流則由一些專為固定大小數(shù)據(jù)集特殊設(shè)計(jì)的算法和數(shù)據(jù)結(jié)構(gòu)進(jìn)行內(nèi)部處理,產(chǎn)生了出色的性能。

通過(guò)探索 Flink 之上構(gòu)建的?用例?來(lái)加深理解。

部署應(yīng)用到任意地方

Apache Flink 是一個(gè)分布式系統(tǒng),它需要計(jì)算資源來(lái)執(zhí)行應(yīng)用程序。Flink 集成了所有常見(jiàn)的集群資源管理器,例如?Hadoop YARN、?Apache Mesos?和?Kubernetes,但同時(shí)也可以作為獨(dú)立集群運(yùn)行。

Flink 被設(shè)計(jì)為能夠很好地工作在上述每個(gè)資源管理器中,這是通過(guò)資源管理器特定(resource-manager-specific)的部署模式實(shí)現(xiàn)的。Flink 可以采用與當(dāng)前資源管理器相適應(yīng)的方式進(jìn)行交互。

部署 Flink 應(yīng)用程序時(shí),F(xiàn)link 會(huì)根據(jù)應(yīng)用程序配置的并行性自動(dòng)標(biāo)識(shí)所需的資源,并從資源管理器請(qǐng)求這些資源。在發(fā)生故障的情況下,F(xiàn)link 通過(guò)請(qǐng)求新資源來(lái)替換發(fā)生故障的容器。提交或控制應(yīng)用程序的所有通信都是通過(guò) REST 調(diào)用進(jìn)行的,這可以簡(jiǎn)化 Flink 與各種環(huán)境中的集成。

運(yùn)行任意規(guī)模應(yīng)用

Flink 旨在任意規(guī)模上運(yùn)行有狀態(tài)流式應(yīng)用。因此,應(yīng)用程序被并行化為可能數(shù)千個(gè)任務(wù),這些任務(wù)分布在集群中并發(fā)執(zhí)行。所以應(yīng)用程序能夠充分利用無(wú)盡的 CPU、內(nèi)存、磁盤和網(wǎng)絡(luò) IO。而且 Flink 很容易維護(hù)非常大的應(yīng)用程序狀態(tài)。其異步和增量的檢查點(diǎn)算法對(duì)處理延遲產(chǎn)生最小的影響,同時(shí)保證精確一次狀態(tài)的一致性。

Flink 用戶報(bào)告了其生產(chǎn)環(huán)境中一些令人印象深刻的擴(kuò)展性數(shù)字

處理每天處理數(shù)萬(wàn)億的事件,應(yīng)用維護(hù)幾TB大小的狀態(tài), 和應(yīng)用在數(shù)千個(gè)內(nèi)核上運(yùn)行。

利用內(nèi)存性能

有狀態(tài)的 Flink 程序針對(duì)本地狀態(tài)訪問(wèn)進(jìn)行了優(yōu)化。任務(wù)的狀態(tài)始終保留在內(nèi)存中,如果狀態(tài)大小超過(guò)可用內(nèi)存,則會(huì)保存在能高效訪問(wèn)的磁盤數(shù)據(jù)結(jié)構(gòu)中。任務(wù)通過(guò)訪問(wèn)本地(通常在內(nèi)存中)狀態(tài)來(lái)進(jìn)行所有的計(jì)算,從而產(chǎn)生非常低的處理延遲。Flink 通過(guò)定期和異步地對(duì)本地狀態(tài)進(jìn)行持久化存儲(chǔ)來(lái)保證故障場(chǎng)景下精確一次的狀態(tài)一致性。

介紹一下什么是Apache Flink

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享