隨著第四次工業(yè)革命的推進(jìn),工業(yè)物聯(lián)網(wǎng)(IIoT)已經(jīng)成為推動制造業(yè)革新和轉(zhuǎn)型的重要力量。通過整合多種傳感器、設(shè)備和系統(tǒng),工業(yè)物聯(lián)網(wǎng)實現(xiàn)了設(shè)備數(shù)據(jù)的有效流通和共享,極大促進(jìn)了生產(chǎn)效率的提升和運(yùn)營成本的降低,同時也為企業(yè)創(chuàng)造了前所未有的商業(yè)機(jī)會。但是,這一技術(shù)進(jìn)步也帶來了巨大的實時數(shù)據(jù)量,對數(shù)據(jù)處理的速度和效率提出了極高的挑戰(zhàn)。在這種背景下,高性能的流式計算技術(shù)成為了工業(yè)物聯(lián)網(wǎng)領(lǐng)域必不可少的核心技術(shù)。
在眾多流式計算框架中,Apache Flink以其出色的性能表現(xiàn)、靈活的API設(shè)計以及精確的一次性狀態(tài)一致性保證等特性,贏得了工業(yè)物聯(lián)網(wǎng)領(lǐng)域進(jìn)行高性能流式計算的青睞。Flink不僅能夠高效處理實時數(shù)據(jù)流,還能夠根據(jù)需要對歷史數(shù)據(jù)進(jìn)行批處理,完美匹配工業(yè)物聯(lián)網(wǎng)在實時性和數(shù)據(jù)處理多樣性方面的需求。
它們的區(qū)別主要在于集群的生命周期以及資源的分配方式不同,以及應(yīng)用的main方法到在客戶端(Client)執(zhí)行還是在JobManager執(zhí)行。
在Flink中,采用會話模式更貼合我們常規(guī)的操作邏輯。在這種模式下,我們首先建立并激活一個集群,保持一個持續(xù)的會話狀態(tài)。用戶可以通過客戶端向這個活躍的會話提交作業(yè)。由于集群在啟動時資源便已分配完畢,因此提交的各個作業(yè)將爭奪集群內(nèi)有限的資源。這種模式主要適用于管理和執(zhí)行眾多小型且執(zhí)行周期短的作業(yè)。
在單作業(yè)模式中,作業(yè)提交之前,F(xiàn)link集群保持靜止?fàn)顟B(tài)。作業(yè)提交時,客戶端負(fù)責(zé)將任務(wù)代碼傳遞給JobManager進(jìn)行調(diào)度執(zhí)行。鑒于會話模式中資源共用可能引發(fā)的一系列問題,我們可以轉(zhuǎn)為采用單作業(yè)模式,即為每個提交的作業(yè)單獨(dú)創(chuàng)建并啟動一個集群。在這種模式下,作業(yè)執(zhí)行結(jié)束,集群隨即停止運(yùn)作,同時釋放所有分配的資源。
在提交作業(yè)時,F(xiàn)link集群隨之啟動,但在此過程中摒棄了客戶端的角色。作業(yè)不是通過客戶端提交給JobManager,而是直接將應(yīng)用程序提交到JobManager上進(jìn)行運(yùn)行。在之前提到的會話模式和單作業(yè)模式中,應(yīng)用代碼在客戶端執(zhí)行,并由客戶端負(fù)責(zé)將代碼發(fā)送至JobManager,這往往會導(dǎo)致客戶端所在節(jié)點(diǎn)承受較大的網(wǎng)絡(luò)帶寬壓力,尤其是在下載依賴和傳輸二進(jìn)制數(shù)據(jù)時。此外,如果多個作業(yè)使用同一客戶端提交,還會進(jìn)一步增加該節(jié)點(diǎn)資源的負(fù)擔(dān)。
為了解決這個問題,F(xiàn)link提供了無客戶端的方式,直接將應(yīng)用程序部署到JobManager上執(zhí)行。這意味著每個提交的應(yīng)用程序都將啟動一個獨(dú)立的JobManager,從而構(gòu)建一個專用的集群。這個JobManager僅為了運(yùn)行該單一應(yīng)用程序而存在,并在應(yīng)用程序執(zhí)行完成后關(guān)閉。這種模式被稱為應(yīng)用模式。
在應(yīng)用模式與單作業(yè)模式中,都是在作業(yè)提交后創(chuàng)建集群。不同之處在于,單作業(yè)模式依然依賴于客戶端提交作業(yè),每個作業(yè)由客戶端解析后分配一個獨(dú)立的集群;而在應(yīng)用模式中,作業(yè)直接由JobManager執(zhí)行,無需通過客戶端中轉(zhuǎn),每個應(yīng)用程序都對應(yīng)一個專門啟動的JobManager。
六、Flink部署運(yùn)行
使用yarn做資源管理,分別使用以上三種模式部署任務(wù):
特點(diǎn):先啟動flink集群,提交作業(yè)時動態(tài)分配資源(TaskManager和slot),取消作業(yè)時資源被回收
1)啟動Flink集群
bin/yarn-session.sh -d -nm yanboot-iot
參數(shù)說明:-d 分離模式 -nm 任務(wù)名稱
啟動之后會給出一個管理頁面地址以及一個YARN應(yīng)用ID
2)提交作業(yè)
bin/flink run -c com.yanboot.iot.DeviceDataCount FlinkTutorial-1.0-SNAPSHOT.jar
特點(diǎn):提交作業(yè)后啟動flink集群
bin/flink run -t yarn-per-job -c com.yanboot.iot.DeviceDataCount FlinkTutorial-1.0-SNAPSHOT.jar
特點(diǎn):用戶的代碼在jobManager端解析
bin/flink run-application -t yarn-application -c com.yanboot.iot.DeviceDataCount FlinkTutorial-1.0-SNAPSHOT.jar
Apache Flink在工業(yè)物聯(lián)網(wǎng)的應(yīng)用場景中,已經(jīng)證明了自己在高效流式計算方面的巨大能力。與研博工業(yè)物聯(lián)網(wǎng)統(tǒng)一接入系統(tǒng)相結(jié)合,F(xiàn)link在處理工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)時展現(xiàn)出了卓越的性能和實時分析的能力。這不僅使得企業(yè)能夠獲得更精確的數(shù)據(jù)洞察力,而且顯著提高了生產(chǎn)效率和運(yùn)營決策的反應(yīng)速度。隨著工業(yè)物聯(lián)網(wǎng)技術(shù)的持續(xù)發(fā)展,F(xiàn)link預(yù)計將在企業(yè)中持續(xù)擔(dān)任關(guān)鍵角色,促進(jìn)流式計算技術(shù)在工業(yè)領(lǐng)域的深入應(yīng)用和廣泛普及。