周維 曹揚 謝紅韜 胡建
收稿日期:2023-08-17
基金項目:國家自然科學基金(U19B2027)
DOI:10.19850/j.cnki.2096-4706.2024.06.007
摘? 要:當今,數(shù)據(jù)的規(guī)模和復雜性不斷增加,對數(shù)據(jù)處理平臺的要求也越來越高。傳統(tǒng)的批處理和實時處理技術(shù)各有優(yōu)缺點,很難滿足大規(guī)模數(shù)據(jù)處理的需求。因此,流批一體化的數(shù)據(jù)處理平臺應運而生。文章在討論流批一體核心架構(gòu)設(shè)計的基礎(chǔ)上,提出一種基于有狀態(tài)實時流的流批一體數(shù)據(jù)處理方法,并通過平臺化的方式實現(xiàn)流批一體數(shù)據(jù)的處理與計算。該平臺先后在四川高速集團、貴陽政府單位示范應用,應用結(jié)果表明平臺不僅統(tǒng)一了批處理和流處理框架,而且具有高效、可靠、可擴展等優(yōu)點,同時能夠滿足大規(guī)模數(shù)據(jù)處理的需求。該平臺的實現(xiàn)對于提高數(shù)據(jù)處理效率和準確性具有重要意義。
關(guān)鍵詞:批處理;有狀態(tài)實時流;平臺化;流批一體
中圖分類號:TP311.1? 文獻標識碼:A? 文章編號:2096-4706(2024)06-0029-06
Design and Research of a Flow Batch Integration Data Processing Platform
Based on Stateful Real-time Flow
ZHOU Wei1, 2, CAO Yang1, 2, XIE Hongtao1, 2, HU Jian1, 2
(1.CETC Big Data Research Institute Co., Ltd., Guiyang? 550081, China; 2.National Engineering Research Center for Big Data Application Technology to Improve Government Governance, Guiyang? 550081, China)
Abstract: Today, the scale and complexity of data are constantly increasing, and the requirements for data processing platforms are also increasing. Traditional batch processing and real-time processing technologies have their own advantages and disadvantages, making it difficult to meet the needs of large-scale data processing. Therefore, a data processing platform that integrates flow processing and batch processing has emerged. On the basis of discussing the core architecture design of flow batch integration, this paper proposes a data processing method for flow batch integration based on stateful real-time flow, and implements the processing and calculation of flow batch integration data through a platform based approach. This platform has been demonstrated application in Sichuan Expressway Group and Guiyang government units. The application results show that the platform not only unifies batch processing and flow processing frameworks, but also has the advantages of efficiency, reliability, scalability, and can meet the needs of large-scale data processing. The implementation of this platform is of great significance for improving data processing efficiency and accuracy.
Keywords: batch processing; stateful real-time flow; platformization; flow batch integration
0? 引? 言
數(shù)據(jù)為數(shù)字經(jīng)濟的發(fā)展提供了不可或缺的動力支持,一是數(shù)據(jù)量井噴式增長。根據(jù)國際數(shù)據(jù)公司(IDC)預測,2025年全球數(shù)據(jù)量將達到163 ZB。隨著數(shù)據(jù)量指數(shù)級增長,數(shù)據(jù)分析算法和技術(shù)迭代更新,數(shù)據(jù)管理與治理手段升級,數(shù)據(jù)創(chuàng)新應用和產(chǎn)業(yè)優(yōu)化升級,數(shù)據(jù)對社會變革的影響更加深遠。二是數(shù)據(jù)產(chǎn)業(yè)規(guī)模持續(xù)擴張。據(jù)IDC預測,2019—2023年全球大數(shù)據(jù)市場相關(guān)收益將實現(xiàn)13.1%的復合年均增長率,2023年總收益將達到3 126.7億美元。三是數(shù)據(jù)技術(shù)產(chǎn)品不斷創(chuàng)新發(fā)展。當前數(shù)據(jù)底層技術(shù)框架日趨成熟,數(shù)據(jù)技術(shù)產(chǎn)品不斷分層細化,覆蓋數(shù)據(jù)存儲、計算、分析、集成、管理、運維等各個方面的技術(shù)有了長足的進步。以大數(shù)據(jù)和數(shù)據(jù)技術(shù)為基礎(chǔ)發(fā)展起來的云計算、物聯(lián)網(wǎng)、人工智能、區(qū)塊鏈等新技術(shù)對社會發(fā)展產(chǎn)生顛覆影響,同時,這些新技術(shù)的發(fā)展也促使流批一體數(shù)據(jù)處理技術(shù)的需求日益增加[1]。一是云計算技術(shù)的普及,越來越多的企業(yè)將數(shù)據(jù)處理任務轉(zhuǎn)移到云端,使得流批一體數(shù)據(jù)處理技術(shù)的需求不斷增加[2]。二是物聯(lián)網(wǎng)設(shè)備的廣泛應用,海量的實時數(shù)據(jù)不斷涌現(xiàn),需要流批一體數(shù)據(jù)處理技術(shù)來實時處理這些數(shù)據(jù)。三是人工智能和機器學習技術(shù)的發(fā)展,越來越多的企業(yè)需要處理實時數(shù)據(jù)來支持這些技術(shù)的應用。
隨著智慧城市[3]、電子政務的發(fā)展,以及物聯(lián)網(wǎng)、人工智能、邊緣計算等技術(shù)的演進,傳統(tǒng)批數(shù)據(jù)的處理架構(gòu)難以滿足企事業(yè)單位的需求,分開搭建批數(shù)據(jù)和流數(shù)據(jù)的架構(gòu)造成運維、學習成本陡增[4]。因此有必要從性能、安全容錯、便捷使用等方面對流批一體的數(shù)據(jù)處理架構(gòu)展開調(diào)研、分析與研究,孵化出流批一體化的數(shù)據(jù)處理新模式與數(shù)據(jù)處理新技術(shù),新技術(shù)不僅可以提供低延遲的實時數(shù)據(jù)處理能力,而且能提供高效的批處理能力,從而能滿足新技術(shù)領(lǐng)域帶來的應用需求。
1? 平臺設(shè)計
1.1? 平臺架構(gòu)設(shè)計
以Spark [5,6]為代表的批處理框架和以Flink [7]為代表的流處理框架,兩者各有特點,現(xiàn)實生產(chǎn)中既有批處理任務又有流處理任務,如果同時維護這兩套處理框架,就會造成以下問題:一是需同時維護兩套計算架構(gòu),造成大量管理成本和資源浪費;二是兩套計算架構(gòu)的處理代碼并不統(tǒng)一,需維護兩套加工代碼;三是兩套并行的架構(gòu)容易導致數(shù)據(jù)處理結(jié)果不一致[8]。本文平臺架構(gòu)設(shè)計過程中,均采用Flink作為計算處理框架,進而來實現(xiàn)流批一體的數(shù)據(jù)處理[9]。
1.1.1? 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)圖主要將流批一體數(shù)據(jù)處理平臺分為4個部分:數(shù)據(jù)源管理、數(shù)據(jù)處理、集群管理、數(shù)據(jù)資源池,如圖1所示。
圖1? 流批一體數(shù)據(jù)處理平臺系統(tǒng)架構(gòu)圖
數(shù)據(jù)源管理:數(shù)據(jù)源管理能將各類不同的數(shù)據(jù)源接入進系統(tǒng)并進行統(tǒng)一管理,數(shù)據(jù)源的接入可以獲取到數(shù)據(jù)源的元數(shù)據(jù)以及Flink的元數(shù)據(jù),這些元數(shù)據(jù)為數(shù)據(jù)處理過程中提供連接參數(shù)。
數(shù)據(jù)處理:數(shù)據(jù)處理分為實時數(shù)據(jù)處理任務和離線數(shù)據(jù)處理任務。實時數(shù)據(jù)處理任務直接將任務提交到Flink集群;離線數(shù)據(jù)處理任務是任務調(diào)度工具根據(jù)配置的調(diào)度模板信息,即調(diào)度時間,進行任務執(zhí)行,其中重要的是任務調(diào)度工具的實現(xiàn),調(diào)度工具中只需要模擬Flink的任務執(zhí)行即可完成離線數(shù)據(jù)任務的處理。數(shù)據(jù)處理中最關(guān)鍵的設(shè)計是統(tǒng)一了實時數(shù)據(jù)處理和離線數(shù)據(jù)處理的統(tǒng)一表達,即實現(xiàn)了同一套FlinkSQL代碼能兼容處理流數(shù)據(jù)和批數(shù)據(jù)的問題。
集群管理:提交Flink任務時,首先要保證安裝了Flink集群,其中Flink當前支持的集群模式包括Standalone集群、Yarn集群、Kubernetes集群;其次,F(xiàn)link集群是利用Flink中的執(zhí)行器來處理提交過來的任務。
數(shù)據(jù)資源池:數(shù)據(jù)資源池是數(shù)據(jù)統(tǒng)一集中管理的位置,將數(shù)據(jù)分為主題應用數(shù)據(jù)、實時數(shù)倉等部分。經(jīng)過Flink任務處理之后,處理的數(shù)據(jù)就能寫入到數(shù)據(jù)資源池中的數(shù)據(jù)表或其他數(shù)據(jù)系統(tǒng)中。
另外,流批一體數(shù)據(jù)處理平臺中處理后的數(shù)據(jù),可為其他外部系統(tǒng)中的數(shù)據(jù)采集環(huán)節(jié)提供離線數(shù)據(jù)采集和實時數(shù)據(jù)采集的支撐,同時也可以為數(shù)據(jù)湖中的數(shù)據(jù)預處理、清洗加工、挖掘分析提供離線和實時的數(shù)據(jù)加工任務執(zhí)行引擎。
1.1.2? 技術(shù)架構(gòu)
流批一體數(shù)據(jù)處理平臺技術(shù)架構(gòu)包含4層,如圖2所示。
圖2? 流批一體數(shù)據(jù)處理平臺技術(shù)架構(gòu)圖
前端采用Vue作為開發(fā)框架,開發(fā)B/S架構(gòu)的軟件系統(tǒng),Vue不僅易于上手,還便于與第三方庫或既有項目整合。
服務端使用基于Java的Spring Boot框架進行開發(fā),它基于Spring 4.0設(shè)計,不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建和開發(fā)過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩(wěn)定性等問題得到了很好的解決。流批一體數(shù)據(jù)處理平臺需要對數(shù)據(jù)加工處理任務進行周期調(diào)度和實時調(diào)度,此處需要突破的關(guān)鍵技術(shù)是實現(xiàn)XXL-JOB任務調(diào)度引擎與Flink結(jié)合,進而實現(xiàn)流任務和批任務的定時調(diào)度。
流批一體數(shù)據(jù)處理平臺的任務執(zhí)行都通過Flink Client向Flink集群提交任務。
流批一體數(shù)據(jù)處理平臺理論上是與Flink完全解耦的,因此流批一體數(shù)據(jù)處理平臺需要通過可配置的方式接入Flink集群,需要實現(xiàn)對原生Flink、CDH、HDP等不同F(xiàn)link的接入。
1.1.3? 功能架構(gòu)
流批一體數(shù)據(jù)處理平臺功能架構(gòu)包括作業(yè)管理、集群管理、函數(shù)管理、連接器管理等主要模塊,功能架構(gòu)圖如圖3所示。其中作業(yè)管理是整個系統(tǒng)的核心,提供SQL、JAR包、圖形組件三種作業(yè)開發(fā)模式,方便不同層次的數(shù)據(jù)開發(fā)工程師使用。為滿足不同數(shù)據(jù)規(guī)模、資源條件的應用場景,支持Local、Standalone、Session、Yarn四種模式的作業(yè)提交方式。
1.2? 平臺功能設(shè)計
基于有狀態(tài)實時流的流批一體數(shù)據(jù)處理平臺以“框架統(tǒng)一、處理高效、操作便捷”為指導思想,構(gòu)建滿足于流批一體的數(shù)據(jù)計算的需求。系統(tǒng)分為9個部分:數(shù)據(jù)源管理、連接器管理、函數(shù)管理、集群管理、執(zhí)行器管理、調(diào)度模板管理、任務管理、作業(yè)管理、運維中心。其功能概述如下:
1)數(shù)據(jù)源管理。將需進行數(shù)據(jù)處理的外部數(shù)據(jù)源進行統(tǒng)一接入和管理,通過數(shù)據(jù)列表將數(shù)據(jù)源進行分門別類,方便進行查詢和檢索。數(shù)據(jù)源類型支持關(guān)系型數(shù)據(jù)庫(MySQL、ClickHouse)、消息中間件Kafka、緩存數(shù)據(jù)庫Redis、非關(guān)系型數(shù)據(jù)庫MongoDB等數(shù)據(jù)源的接入。所有外部數(shù)據(jù)源的密碼進行加密存儲,保證數(shù)據(jù)安全。數(shù)據(jù)源管理功能如表1所示。
2)連接器管理。Flink Connector是Flink與外部系統(tǒng)集成和連接的橋梁,流批一體數(shù)據(jù)處理平臺作為一個共性的、應用工具軟件,需要滿足不同場景的數(shù)據(jù)庫適配需求。連接器管理提供對Flink Connector的統(tǒng)一管理功能,包括Flink Connector的上傳到本地和上傳到集群的功能等。連接器管理功能如表2所示。
3)函數(shù)管理。函數(shù)管理是任務開發(fā)工作的基礎(chǔ),旨在建立統(tǒng)一的Flink函數(shù)管理入口,方便FlinkSQL任務開發(fā)時調(diào)用,其中函數(shù)類型包括比較函數(shù)、邏輯函數(shù)、字符串函數(shù)、Streaming、Batch等。具體功能如表3所示。
表1? 數(shù)據(jù)源管理功能項
功能項名稱 功能項描述
數(shù)據(jù)源列表 支持數(shù)據(jù)源目錄的新增、刪除、修改、查詢,支持數(shù)據(jù)源和數(shù)據(jù)源目錄的綁定,支持按照數(shù)據(jù)源目錄篩選數(shù)據(jù)源列表
關(guān)系型
數(shù)據(jù)庫 支持MySQL、ClickHouse數(shù)據(jù)源的新增、刪除、修改、查詢和連接、心跳檢測、Flink連接配置
非關(guān)系型
數(shù)據(jù)庫 支持MongoDB數(shù)據(jù)庫的接入的新增、刪除、修改、查詢和連接、心跳檢測、Flink連接配置
消息中間件 支持Kafka數(shù)據(jù)庫的接入的新增、刪除、修改、查詢和連接、心跳檢測、Flink連接配置
緩存數(shù)據(jù)庫 支持Redis數(shù)據(jù)源的新增、刪除、修改、查詢和連接、心跳檢測、Flink連接配置
表2? 連接器管理功能項
功能項名稱 功能項描述
官方連接器管理 支持連接器的新增、刪除、修改、查詢,同步
自定義連接器管理 支持連接器的新增、刪除、修改、查詢,下載、同步
表3? 函數(shù)管理功能項
功能項名稱 功能項描述
函數(shù)管理 支持函數(shù)的新增、刪除、修改和查詢、啟用、調(diào)用
4)集群管理。集群管理也是任務開發(fā)工作的基
礎(chǔ),建立統(tǒng)一的集群管理界面,方便FlinkSQL或FlinkJar任務開發(fā)時,能選擇任務的提交集群,集群管理包括Flink集群管理和Hadoop集群管理,其中Flink集群又可以分為Standalone、Yarn Session、Yarn Per-job、Yarn Application等。集群管理功能如表4所示。
表4? 集群管理功能項
功能項名稱 功能項描述
Flink集群
管理 支持集群的新增、刪除、修改和查詢、啟用、調(diào)用、心跳檢測、回收功能;支持跳轉(zhuǎn)到Flink集群的Dashboard界面
Hadoop集群管理 支持集群的新增、刪除、修改和查詢、測試;支持指定Hadoop集群的配置文件路徑和Flink集群的配置文件路徑以及Flink Lib包路徑
5)執(zhí)行器管理。執(zhí)行器是批處理任務執(zhí)行和調(diào)度的工具,批處理任務提交后,任務會提交給執(zhí)行器去處理。執(zhí)行器管理的主要功能是提供執(zhí)行器的注冊,便于執(zhí)行器的統(tǒng)一管理。執(zhí)行器管理功能如表5所示。
表5? 執(zhí)行器管理功能項
功能項名稱 功能項描述
執(zhí)行器管理 支持執(zhí)行器的新增、刪除、修改和查詢;支持執(zhí)行器的自動注冊和手動錄入
6)調(diào)度模板管理。調(diào)度模板是批處理任務的調(diào)度配置信息,便于執(zhí)行器按照調(diào)度配置信息去執(zhí)行任務,另外,調(diào)度模板的管理也方便多個任務同時使用同一個調(diào)度模板信息,這樣就不會每一個任務都需要配置調(diào)度信息。調(diào)度模板管理提供執(zhí)行器路由策略、阻塞處理策略、調(diào)度周期等參數(shù)配置。調(diào)度模板管理功能如表6所示。
表6? 調(diào)度模板管理功能項
功能項名稱 功能項描述
調(diào)度模板管理 支持調(diào)度模板的新增、刪除、修改和查詢;支持注冊節(jié)點、下次觸發(fā)時間查詢;支持執(zhí)行器選擇
調(diào)度周期管理 支持分鐘、小時、天、周、月等調(diào)度周期
7)任務管理。任務管理是編排流批一體任務的管理界面,為滿足數(shù)據(jù)規(guī)模大、實時性高、數(shù)據(jù)類型多樣的數(shù)據(jù)處理要求,流批一體數(shù)據(jù)處理平臺需要具備實時計算和批計算兩種功能,且需要具備定時調(diào)度的功能。具體功能如表7所示。
8)作業(yè)管理。作業(yè)管理是流批一體數(shù)據(jù)處理平臺的核心功能。作業(yè)管理是流批一體作業(yè)的開發(fā)、執(zhí)行、部署等操作進行管理;作業(yè)開發(fā)包括FlinkSQL、Flink圖形化組件、Flink Jar開發(fā)三種模式;作業(yè)執(zhí)行包括作業(yè)發(fā)布、作業(yè)提交到集群、作業(yè)停止、作業(yè)恢復等操作功能;作業(yè)部署是將作業(yè)提交到集群進行執(zhí)行,作業(yè)的執(zhí)行模式包括Local、Standalone、Session、YarnApplication等模式。具體功能如表8所示。
表7? 任務管理功能項
功能項名稱 功能項描述
周期任務管理 支持周期任務的新增、刪除、修改和查詢,支持多種數(shù)據(jù)類型的數(shù)據(jù)處理
周期任務編排 支持周期任務拖拽式任務編排
周期任務調(diào)度 周期處理任務支持周期性調(diào)度和手動執(zhí)行,支持分鐘、小時、天、周、月等調(diào)度周期
周期任務啟動 支持周期任務按照任務調(diào)度配置調(diào)度執(zhí)行任務
周期任務停止 支持周期任務按照任務停止執(zhí)行
周期任務執(zhí)行一次 支持周期任務手動執(zhí)行一次操作
實時任務管理 支持實時流計算任務的新增、刪除、修改和查詢,支持實時計算引擎
實時任務編排 支持實時流計算拖拽式任務編排
實時任務啟動 支持實時任務啟動執(zhí)行
實時任務停止 支持周期任務停止執(zhí)行
表8? 作業(yè)管理功能項
功能項名稱 功能項描述
作業(yè)開發(fā) 支持保存SQL、語法檢測、調(diào)試、會話、元數(shù)據(jù)獲取、數(shù)據(jù)源獲取、環(huán)境配置、作業(yè)配置、執(zhí)行配置功能
作業(yè)執(zhí)行 支持執(zhí)行當前SQL、異步提交、發(fā)布、上線、下線功能
作業(yè)部署 支持不同模式的作業(yè)部署,包括Local、Standalone、Session、YarnApplication
作業(yè)日志 支持查看Flink啟動日志和執(zhí)行日志的查看
Jar管理 支持Flink jar包的上傳、下載、刪除功能
9)運維中心。運維中心提供任務操作與狀態(tài)等多方位的運維能力。當開發(fā)完成并提交和發(fā)布至集群后,即可在運維中心對任務進行運維操作,包括作業(yè)實例運行詳情查看、作業(yè)任務的關(guān)鍵指標查看、集群信息、作業(yè)快照、異常信息、作業(yè)日志、自動調(diào)優(yōu)、配置信息、FlinkSQL、數(shù)據(jù)地圖、即席查詢、歷史版本、告警記錄。具體功能如表9所示。
表9? 運維中心功能項
功能項名稱 功能項描述
作業(yè)實例 支持查看Flink作業(yè)實例狀態(tài)
作業(yè)總覽 支持查看Flink作業(yè)的各監(jiān)控指標,包括作業(yè)狀態(tài)、重啟次數(shù)等指標
集群信息 支持查看集群實例信息
作業(yè)快照 支持查看 該任務的CheckPoint SavePoint,并且可以基于某一個CheckPoint/SavePoint重啟該任務
異常信息 支持查看Flink作業(yè)啟動及運行時的異常
歷史版本 支持對比查看Flink作業(yè)發(fā)布后的多個版本
告警記錄 支持查看Flink作業(yè)提交和發(fā)布后的告警信息
一鍵上下線 支持已發(fā)布的作業(yè)進行一鍵上下線操作
1.3? 平臺關(guān)鍵設(shè)計和關(guān)鍵技術(shù)
1.3.1? 關(guān)鍵設(shè)計
1)批數(shù)據(jù)和流數(shù)據(jù)的統(tǒng)一表達和查詢設(shè)計。針對企業(yè)數(shù)字化轉(zhuǎn)型建設(shè)過程中對離線數(shù)據(jù)和實時數(shù)據(jù)的融合處理需求,將業(yè)務數(shù)據(jù)化,數(shù)據(jù)算子化,設(shè)計可復制、可擴展的UDF算子和連接器,通過引入動態(tài)表概念,把離線表、動態(tài)流都表達為表,設(shè)計了批處理和流處理在操作對象表達方式上的統(tǒng)一,保證對流式數(shù)據(jù)查詢的連續(xù)性。同時,支持對流式計算的撤銷操作,避免相同鍵值的數(shù)據(jù)參與多次計算,實現(xiàn)在流批一體數(shù)據(jù)處理過程中對持續(xù)增長和持續(xù)輸出的流數(shù)據(jù)的正確操作。形成一套將任意標準的SQL轉(zhuǎn)化成實時計算程序的技術(shù)方案,采用SQL作為統(tǒng)一的編程語言,通過可視化的人機交互式方式,完整的使用SQL語義來表達流計算任務,達到對批數(shù)據(jù)和流數(shù)據(jù)的查詢使用同一套SQL語句的目的,實現(xiàn)批流一體計算平臺中批數(shù)據(jù)和流數(shù)據(jù)的統(tǒng)一查詢。
2)多版本多模式兼容的Flink SQL執(zhí)行引擎設(shè)計。為了滿足不同數(shù)據(jù)規(guī)模、不同資源環(huán)境的數(shù)據(jù)開發(fā)需求,流批一體數(shù)據(jù)處理平臺設(shè)計了Local、Standalone、Yarn、Session四種不同的任務運行模式,同時也支持在不同版本Flink集群中執(zhí)行。
流批一體數(shù)據(jù)處理平臺設(shè)計了集群管理功能,用于管理不同版本的集群。另外,在Flink SQL作業(yè)開發(fā)過程可以選擇不同的執(zhí)行模式,這樣就滿足了多版本多模式兼容的執(zhí)行引擎。
3)自定義函數(shù)設(shè)計。流批一體數(shù)據(jù)處理平臺研制的目的是滿足用戶對數(shù)據(jù)加工處理的需求,因此,在設(shè)計過程中預置了常用的函數(shù),這樣在數(shù)據(jù)開發(fā)過程中就可以直接使用預置的函數(shù);另外,對于不滿足的函數(shù)需求,平臺設(shè)計了自定義函數(shù)管理功能,即可以通過配置自定義函數(shù)的相關(guān)數(shù)據(jù),就能滿足開發(fā)過程中調(diào)用的需求,這樣能夠大大提高系統(tǒng)的可用性,提高數(shù)據(jù)開發(fā)的效率。
1.3.2? 關(guān)鍵技術(shù)
1)XxlJob調(diào)度引擎與Flink引擎適配技術(shù)。XxlJob中有執(zhí)行器和調(diào)度器兩個功能組件,調(diào)度器負責按照調(diào)度周期調(diào)度任務,執(zhí)行器負責執(zhí)行任務,流批一體數(shù)據(jù)處理平臺中用到的關(guān)鍵技術(shù)是XxlJob調(diào)度引擎與Flink引擎適配技術(shù),即實現(xiàn)XxlJob執(zhí)行器功能,XxlJob執(zhí)行器具備Flink引擎執(zhí)行任務功能。
執(zhí)行器能解析批數(shù)據(jù)處理任務參數(shù),其中任務參數(shù)包括SQL語句、Flink集群信息、批處理任務等參數(shù)信息,然后調(diào)用Flink引擎統(tǒng)一的API接口方法,進而批數(shù)據(jù)處理任務就以任務參數(shù)的形式提交給Flink引擎去處理了。
2)基于Checkpoint和SavePoint的實時流狀態(tài)管理技術(shù)。Flink是一個有狀態(tài)的分布式流式計算引擎,F(xiàn)link中的每個Function或者是Operator都可以是有狀態(tài)的,有狀態(tài)的Function在處理流數(shù)據(jù)或事件的同時會存儲一部分用戶自定義的數(shù)據(jù),這使得Flink的狀態(tài)可以作為任何更精細操作的基礎(chǔ)。然而總會有一些原因使流任務出現(xiàn)異常(如網(wǎng)絡(luò)故障、代碼bug等),為了使得狀態(tài)可以容錯,流批一體數(shù)據(jù)處理平臺中引入了Checkpoint機制。Checkpoint使得Flink能夠恢復流任務的狀態(tài)和位置,從而為流任務提供與無故障執(zhí)行相同的語義。Savepoint在底層使用的代碼和Checkpoint的代碼是一樣的,因為Savepoint可以看作Checkpoint在特定時期的一個狀態(tài)快照[10]。
流批一體數(shù)據(jù)處理平臺定期保存狀態(tài)數(shù)據(jù)到存儲上,故障發(fā)生后從之前的備份中恢復,整個被稱為Checkpoint機制,它為Flink提供了Exactly-Once的保障。流批一體數(shù)據(jù)處理平臺中提供Checkpoint和SavePoint的實時流狀態(tài)管理技術(shù),任務在失敗或出現(xiàn)異常的情況下,可以通過Checkpoint和SavePoint的實時流狀態(tài)管理中的一鍵恢復功能達到任務從失敗點開始繼續(xù)執(zhí)行的效果。具體流程如圖4所示。
圖4? Checkpoint機制處理流程圖
由圖4可知,Checkpoint Barrier被插入到數(shù)據(jù)流中,它將數(shù)據(jù)流切分成段。Flink的Checkpoint邏輯是:一段新數(shù)據(jù)流入導致狀態(tài)發(fā)生了變化,F(xiàn)link的算子接收到Checkpoint Barrier后,對狀態(tài)進行快照。每個Checkpoint Barrier有一個ID,表示該段數(shù)據(jù)屬于哪次Checkpoint。當ID為n的Checkpoint Barrier到達每個算子后,表示要對n-1和n之間狀態(tài)的更新做快照。Checkpoint Barrier有點像Event Time中的Watermark,它被插入到數(shù)據(jù)流中,但并不影響數(shù)據(jù)流原有的處理順序[11]。
2? 平臺應用
平臺部分截圖如圖5所示。
平臺現(xiàn)已應用于四川高速集團、貴陽政府單位示范應用,主要解決數(shù)據(jù)采集、流批一體數(shù)據(jù)處理問題,有效支撐企事業(yè)單位的數(shù)據(jù)處理需求,提高數(shù)據(jù)處理效率,賦能企事業(yè)單位的運行管理。
3? 結(jié)? 論
本文針對流數(shù)據(jù)和批數(shù)據(jù)等特性,突破了批數(shù)據(jù)和流數(shù)據(jù)的統(tǒng)一表達和查詢關(guān)鍵技術(shù),設(shè)計了一種流批一體的數(shù)據(jù)處理方法,并通過平臺化研制流批一體數(shù)據(jù)處理核心模塊,性能與成熟度達到國內(nèi)先進水平。該平臺先后在四川高速集團、貴陽政府單位示范應用,應用表明平臺不僅統(tǒng)一了流批計算框架和引擎,而且明顯減少了部署成本,提高了數(shù)據(jù)處理效率。
參考文獻:
[1] 鄭陽婷.數(shù)字化技術(shù)在城市管理中的應用 [J].電子技術(shù),2023,52(3):274-275.
[2] 郭亞楠,肖菡.云計算在計算機數(shù)據(jù)處理中的應用 [J].電子技術(shù),2023,52(2):198-199.
[3] 周林興,崔云萍.智慧城市視域下政府數(shù)據(jù)開放共享機制研究 [J].現(xiàn)代情報,2021,41(8):147-159.
[4] 黃春,姜浩,全哲,等.面向深度學習的批處理矩陣乘法設(shè)計與實現(xiàn) [J].計算機學報,2022,45(2):225-239.
[5] 李碩,梁毅.面向Spark的批處理應用執(zhí)行時間預測模型 [J].計算機工程與應用,2021,57(5):79-87.
[6] ZAHARIA M,XIN R S,WENDELL P,et al. Apache Spark: a unified engine for big data processing [J].COMMUNICATIONS OF THE ACM,2016,59(11):56-65.
[7] CARBONE P,EWEN S,HARIDI S,et al. Apache Flink?: Stream and Batch Processing in a Single Engine [EB/OL].[2023-07-16].https://xdxk.cbpt.cnki.net/EditorDN/EditorWorkPlace/ReferParallel.aspx.
[8] 陳氫,宋仕偉.數(shù)據(jù)治理視角下的湖倉一體架構(gòu)研究 [J].數(shù)字圖書館論壇,2023,19(4):19-28.
[9] 王玉真.基于Flink的實時計算平臺的設(shè)計與實現(xiàn) [D].南昌:南昌大學,2020.
[10] 于志良.基于Flink的鯨魚優(yōu)化K-Means算法 [J].互聯(lián)網(wǎng)周刊,2023(4):83-85.
[11] 慶驍.面向FLINK流處理框架的容錯策略優(yōu)化研究 [D].哈爾濱:哈爾濱工業(yè)大學,2019.
作者簡介:周維(1990—),男,漢族,貴州貴陽人,工程師,碩士,主要研究方向:數(shù)據(jù)治理、數(shù)據(jù)挖掘、數(shù)據(jù)開發(fā)。