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