摘? 要: 在大數(shù)據(jù)時(shí)代,數(shù)字化轉(zhuǎn)型是企業(yè)發(fā)展戰(zhàn)略的必然選擇,而實(shí)時(shí)數(shù)倉建設(shè)則是數(shù)字化轉(zhuǎn)型的重點(diǎn)。實(shí)時(shí)計(jì)算相對(duì)于傳統(tǒng)的批處理,能夠快速體現(xiàn)數(shù)據(jù)的價(jià)值,有著廣泛的實(shí)時(shí)業(yè)務(wù)場(chǎng)景需求。本文提出一種基于Flink的實(shí)時(shí)數(shù)倉設(shè)計(jì),并在DPI業(yè)務(wù)場(chǎng)景得到實(shí)踐驗(yàn)證,有效支撐了運(yùn)營(yíng)商對(duì)業(yè)務(wù)請(qǐng)求次數(shù)、流量、活躍用戶數(shù)、業(yè)務(wù)成功率等多維度指標(biāo)需求,可為其他更廣泛的實(shí)時(shí)業(yè)務(wù)場(chǎng)景落地奠定堅(jiān)實(shí)的基礎(chǔ)。
關(guān)鍵詞: 流式計(jì)算; Flink; 實(shí)時(shí)數(shù)倉; DPI
中圖分類號(hào):TP311? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2022)05-56-04
Design of real-time data warehouse based on Flink and application of DPI service
Wu Xiaofang
Abstract: In the era of big data, digital transformation is the inevitable choice of enterprise development strategy, and construction of real-time data warehouse is the top priority of digital transformation. Compared with traditional batch processing, real-time computing can quickly reflect the value of data and has a wide range of real-time business scenarios. In this paper, a real-time data warehouse design based on Flink is proposed and verified in practice in DPI business scenarios. It effectively supports the operators' requirements for multi-dimensional indicators such as business request times, traffic, number of active users, and business success rate. It can lay a solid foundation for the implementation of other broader real-time business scenarios.
Key words: flow calculation; Flink; real time data warehouse; DPI
引言
當(dāng)今世界,信息化、數(shù)字化、智能化成為鮮明的時(shí)代特征,數(shù)字經(jīng)濟(jì)成為經(jīng)濟(jì)高質(zhì)量發(fā)展的重要支撐。5G時(shí)代的來臨,更為數(shù)字經(jīng)濟(jì)發(fā)展提供了嶄新的動(dòng)能,數(shù)字化轉(zhuǎn)型成為企業(yè)發(fā)展戰(zhàn)略的必然選擇。
根據(jù)IBM Marketing cloud的最新報(bào)告,“僅過去兩年就創(chuàng)建了當(dāng)今世界90%的數(shù)據(jù),每天創(chuàng)建2.5億億字節(jié)的數(shù)據(jù),隨著新設(shè)備、傳感器、新技術(shù)的出現(xiàn),數(shù)據(jù)增長(zhǎng)率還會(huì)進(jìn)一步加快”。運(yùn)營(yíng)商DPI(深度報(bào)文解析)包括LTE、DPI和家寬DPI,通過分光鏡像的數(shù)據(jù)是海量的,基于這些DPI數(shù)據(jù),充分挖掘使用價(jià)值,可為網(wǎng)絡(luò)質(zhì)量與市場(chǎng)業(yè)務(wù)提供指導(dǎo)作用。運(yùn)營(yíng)商信令數(shù)據(jù)在場(chǎng)景保障、網(wǎng)絡(luò)指標(biāo)裂化、投訴處理、感知問題溯源、問題定位定界等方面起重要作用。針對(duì)全網(wǎng)或某些重點(diǎn)區(qū)域進(jìn)行實(shí)時(shí)指標(biāo)監(jiān)控,可以先于投訴解決問題,提升用戶對(duì)網(wǎng)絡(luò)感知滿意度。
目前現(xiàn)已有大數(shù)據(jù)基礎(chǔ)設(shè)施建設(shè),批處理采用基于Spark計(jì)算引擎分布式集群,流處理采用基于Storm組件分布式集群。但隨著技術(shù)的迭代更新,各種處理組件層出不窮,在集群搭建組件選擇時(shí),需遵循數(shù)據(jù)處理高效性、集群穩(wěn)定性、投資合理性三方面原則基礎(chǔ)上,因地制宜,嘗試新的技術(shù)選型,進(jìn)而提高性能,降低資源投入。
基于上述問題,本文提出了一種基于Flink的實(shí)時(shí)數(shù)倉設(shè)計(jì),應(yīng)用于運(yùn)營(yíng)商DPI數(shù)據(jù)業(yè)務(wù)中,在性能、吞吐量等方面效果明顯提升,有效地減少了集群中服務(wù)器節(jié)點(diǎn)數(shù)量,節(jié)約了硬件資源。
1 Flink概述
Apache Flink[1,2]是一個(gè)面向分布式數(shù)據(jù)流處理和批量數(shù)據(jù)處理的開源計(jì)算框架,它可以在同一個(gè)Flink運(yùn)行時(shí)(Flink Runtime)支持分布式流處理和批處理兩種類型功能應(yīng)用[3],極大提高了迭代算法的性能。Flink開源項(xiàng)目是近兩年大數(shù)據(jù)處理領(lǐng)域冉冉升起的一顆新星,但在國(guó)內(nèi)許多大型互聯(lián)網(wǎng)企業(yè)的工程實(shí)踐中均有應(yīng)用,如阿里、美團(tuán)、京東等。本文對(duì)三種主流開源流處理的技術(shù)做對(duì)比,具體如表1所示。
從編程語言角度而言,Spark編程語言主要是Java和Scala。而Flink主要是Java,編程語言更加成熟,代碼通用度更高,修改代碼更容易。
從時(shí)延和吞吐量角度而言,F(xiàn)link是純粹的流式設(shè)計(jì),通過使用顯示迭代程序[4],極大提高了算法性能。Flink吞吐量約為Storm的3~5倍,F(xiàn)link在滿吞吐時(shí)延遲約為Storm的一半。Flink在時(shí)延和吞吐量方面的性能表現(xiàn)較好,特別適用于對(duì)超大規(guī)模數(shù)據(jù)流在線實(shí)時(shí)計(jì)算的要求。
從與現(xiàn)有生態(tài)體系結(jié)合角度而言,F(xiàn)link與超大型計(jì)算和存儲(chǔ)HBase的結(jié)合比Spark和Storm更有優(yōu)勢(shì),同時(shí)接口也更友好。
綜合比較之下,F(xiàn)link是一個(gè)設(shè)計(jì)良好的框架,它不但功能強(qiáng)大,而且性能出色,同時(shí)兼顧低延遲、高吞吐和高性能,所以這是本文采用Flink技術(shù)的主要原因。
2 架構(gòu)設(shè)計(jì)
2.1 整體架構(gòu)設(shè)計(jì)
本項(xiàng)目采用架構(gòu)分層、功能模塊化的總體設(shè)計(jì)思路。模塊間采用標(biāo)準(zhǔn)接口,便于升級(jí)替換,整體架構(gòu)分為三層,具體如圖1所示。
⑴ 數(shù)據(jù)采集層:支持多源異構(gòu)數(shù)據(jù)源的數(shù)據(jù)采集。包括:上網(wǎng)日志留存系統(tǒng)、統(tǒng)一采集平臺(tái)等。
⑵ 數(shù)據(jù)處理層:對(duì)接數(shù)據(jù)采集層源數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的多樣化處理。包括:流式處理、批處理等。對(duì)外提供統(tǒng)一的數(shù)據(jù)共享、數(shù)據(jù)查詢引擎。
⑶ 應(yīng)用層:依托數(shù)據(jù)處理層提供的統(tǒng)一數(shù)據(jù)共享、數(shù)據(jù)查詢引擎,服務(wù)多場(chǎng)景引用。包括:可視化分析子系統(tǒng)、業(yè)務(wù)應(yīng)用及門戶、實(shí)時(shí)場(chǎng)景。
2.2 實(shí)時(shí)數(shù)倉架構(gòu)設(shè)計(jì)
在圖1所示的大數(shù)據(jù)處理平臺(tái)系統(tǒng)整體架構(gòu)基礎(chǔ)上,針對(duì)實(shí)時(shí)鏈路進(jìn)一步細(xì)化,其遵循架構(gòu)分層原則,將數(shù)據(jù)處理層拆分為二層:數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ),旨在強(qiáng)調(diào)Apache Flink的技術(shù)核心角色,其完成上游ODS原始數(shù)據(jù)和DIM公共維表數(shù)據(jù)的攝取,對(duì)接下游DWS實(shí)時(shí)指標(biāo)的存儲(chǔ),圖2為實(shí)時(shí)數(shù)倉架構(gòu)設(shè)計(jì)圖。
3 DPI業(yè)務(wù)實(shí)現(xiàn)
圖3所示為DPI業(yè)務(wù)場(chǎng)景數(shù)據(jù)處理流程,技術(shù)選型SDTP+Kafka+Flink+Codis,包括以下六個(gè)步驟。
Step1:通過SDTP接口實(shí)時(shí)采集數(shù)據(jù),DPI系統(tǒng)產(chǎn)生的信令數(shù)據(jù)經(jīng)過分光、回填地市、號(hào)碼、打時(shí)間戳等數(shù)據(jù)預(yù)處理動(dòng)作,輸出XDR數(shù)據(jù)到SDTP數(shù)據(jù)接收集群。
Step2:數(shù)據(jù)實(shí)時(shí)加載到Kafka集群,通過SDTP接口實(shí)時(shí)接收XDR數(shù)據(jù),完成解析等預(yù)處理動(dòng)作后實(shí)時(shí)加載到Kafka集群。
Step3:Flink集群實(shí)時(shí)讀取XDR數(shù)據(jù)。
Step4:Flink實(shí)時(shí)處理數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)邏輯,完成各類型實(shí)時(shí)指標(biāo)的計(jì)算。
Step5:計(jì)算結(jié)果實(shí)時(shí)寫入Codis集群。
Step6:歷史數(shù)據(jù)定時(shí)同步,提供統(tǒng)一的實(shí)時(shí)數(shù)據(jù)共享服務(wù)(包括:OpenAPI,WS)對(duì)外提供數(shù)據(jù)服務(wù),包括實(shí)時(shí)數(shù)據(jù)查詢、歷史數(shù)據(jù)查詢等。
3.1 數(shù)據(jù)采集
通過SDTP接口實(shí)時(shí)采集DPI系統(tǒng)數(shù)據(jù)并輸出到Kafka集群時(shí),根據(jù)業(yè)務(wù)屬性和數(shù)據(jù)規(guī)模, 對(duì)Kafka Topic進(jìn)行了細(xì)化設(shè)計(jì),具體見表2所示。
3.2 數(shù)據(jù)處理
信令實(shí)時(shí)指標(biāo)定義,時(shí)間維度包括1分鐘、5分鐘。空間維度從小到大包括小區(qū)、場(chǎng)景/地市、省等。指標(biāo)包括:業(yè)務(wù)請(qǐng)求次數(shù)(COUNT)、流量(SUM)、活躍用戶數(shù)、業(yè)務(wù)成功率等。文中表3給出了實(shí)時(shí)指標(biāo)定義示例。
根據(jù)不同的指標(biāo)定義,對(duì)應(yīng)不同的Flink作業(yè)。
⑴ 基礎(chǔ)指標(biāo)作業(yè)??煞秩龑?,第一層數(shù)據(jù)接入,第二層完成最細(xì)粒度維度所有小區(qū)的指標(biāo)計(jì)算,是最核心邏輯。第三層高維度指標(biāo)聚合,通過第二層中間節(jié)點(diǎn),下游輸入數(shù)據(jù)規(guī)模由無限降為有限,最多為小區(qū)數(shù)*業(yè)務(wù)細(xì)類數(shù),與源數(shù)據(jù)量無關(guān)。
⑵ 用戶數(shù)指標(biāo)作業(yè)。因?yàn)橛脩魯?shù)指標(biāo)的特殊性,其只能對(duì)接全量XDR源數(shù)據(jù),獨(dú)立計(jì)算所有維度。
3.3 數(shù)據(jù)存儲(chǔ)
本文采用的技術(shù)選型Codis集群,根據(jù)業(yè)務(wù)類別和實(shí)時(shí)指標(biāo)規(guī)模,設(shè)計(jì)多維度鍵值指標(biāo)存儲(chǔ)模式,具體詳細(xì)指標(biāo)如表4所示。
3.4 應(yīng)用效果
根據(jù)設(shè)計(jì)的方案,通過實(shí)施部署91臺(tái)物理機(jī),支撐處理數(shù)據(jù)量100T/天,數(shù)據(jù)條數(shù)3735億條/天。
經(jīng)過測(cè)試應(yīng)用,1分鐘粒度時(shí)延由9分鐘縮短為2分鐘,5分鐘粒度由9分鐘縮短為6分鐘,時(shí)延效果如表5所示。在硬件方面,節(jié)省了物理機(jī),減少了硬件投資,降低了CPU使用率,具體性能效果如表6所示。
4 結(jié)束語
本文通過分析傳統(tǒng)實(shí)時(shí)數(shù)倉組件Spark Streaming和Apache Storm的處理效率低、吞吐率低等問題,基于Flink組件,設(shè)計(jì)了高效的實(shí)時(shí)數(shù)倉架構(gòu),并且結(jié)合運(yùn)營(yíng)商DPI數(shù)據(jù)業(yè)務(wù)場(chǎng)景,實(shí)現(xiàn)了技術(shù)選型為SDTP+Kafka+Flink+Codis的系統(tǒng)開發(fā)上線,在減少大量硬件投入的情況下,滿足了運(yùn)營(yíng)商對(duì)于業(yè)務(wù)請(qǐng)求次數(shù)、流量、活躍用戶數(shù)、業(yè)務(wù)成功率等多維度指標(biāo)需求,達(dá)到了降本增效的目的。
參考文獻(xiàn)(References):
[1] Alexandrov A, Bergmann R, Ewen S, et al.The
Stratosphere platform for big data analytics[J].Vldb Journal,2014,23(6):939-964
[2] Apache Flink[EB/OL].[2019-09-01].https://flink.apache.
org/.
[3] 宋靈城.Flink和Spark Streaming流式計(jì)算模型比較分析[J].
通信技術(shù),2020,53(1):59-62
[4] 代明竹,高嵩峰.基于Hadoop、Spark及Flink大規(guī)模數(shù)據(jù)
分析的性能評(píng)價(jià)[J].中國(guó)電子科學(xué)研究院學(xué)報(bào),2018,13(2):149-155
收稿日期:2021-10-25
*基金項(xiàng)目:江西省教育科學(xué)規(guī)劃項(xiàng)目“教育大數(shù)據(jù)背景下在線學(xué)習(xí)資源個(gè)性化智能推薦研究”(21QN012)
作者簡(jiǎn)介:吳小芳(1990-),女,江西九江人,碩士,工程師,主要研究方向:信息技術(shù),數(shù)據(jù)挖掘。