張海濤 薛 翔
1(云南中煙工業(yè)有限責(zé)任公司 云南 昆明 650231)2(大連達(dá)碩信息技術(shù)有限公司 遼寧 大連 116023)
大數(shù)據(jù)背景下,數(shù)據(jù)驅(qū)動煙草業(yè)務(wù)發(fā)展已成為普遍共識[1-2],大數(shù)據(jù)分析技術(shù)在煙草研發(fā)領(lǐng)域的應(yīng)用已成為研究熱點,諸多理論研究成果應(yīng)運而生[3-6]。同時,也產(chǎn)生了許多應(yīng)用于煙草領(lǐng)域的數(shù)據(jù)云平臺的研究與開發(fā)。例如:鄒暾等[7]針對煙草業(yè)務(wù)特點,設(shè)計靈活可快速部署的煙草企業(yè)云平臺架構(gòu);陳力等[8]構(gòu)建私有云平臺,整合煙草企業(yè)相關(guān)軟、硬件資源,解決業(yè)務(wù)系統(tǒng)分散獨立、整合難的問題;張君等[9]借助云平臺,重構(gòu)煙草企業(yè)創(chuàng)新流程;李益文[10]利用云平臺服務(wù),實現(xiàn)通省級煙草基礎(chǔ)資源的多層級、統(tǒng)一管理調(diào)度。
上述研究是大數(shù)據(jù)分析技術(shù)在煙草領(lǐng)域應(yīng)用的有益探索,但目前行業(yè)內(nèi),整合煙草研發(fā)業(yè)務(wù)多源異構(gòu)數(shù)據(jù)進行煙草研發(fā)業(yè)務(wù)分析的成功案例較少。究其原因,煙草研發(fā)業(yè)務(wù)廣泛的特點,導(dǎo)致煙草研發(fā)數(shù)據(jù)體量大、類型繁雜、存儲分散的問題,精通卷煙研發(fā)業(yè)務(wù)的行業(yè)專家難以利用上述龐雜的數(shù)據(jù)有效挖掘價值,最終影響大數(shù)據(jù)分析技術(shù)在研發(fā)體系中的應(yīng)用成效。
針對煙草研發(fā)體系的業(yè)務(wù)、數(shù)據(jù)、用戶的特點,采用分層技術(shù)架構(gòu),構(gòu)建面向用戶的煙草研發(fā)體系大數(shù)據(jù)云平臺,封裝數(shù)據(jù)采集與存儲,規(guī)范數(shù)據(jù)管理,簡化數(shù)據(jù)分析流程,讓煙草研發(fā)體系的“非數(shù)據(jù)專家用戶”更專注于煙草研發(fā)業(yè)務(wù)本身,避免用戶直面復(fù)雜的大數(shù)據(jù)分析技術(shù)和龐雜的煙草研發(fā)原始數(shù)據(jù),降低用戶大數(shù)據(jù)分析技術(shù)要求,是讓煙草研發(fā)人員實現(xiàn)利用數(shù)據(jù)驅(qū)動煙草研發(fā)業(yè)務(wù)的重要探索和嘗試。
要實現(xiàn)讓煙草研發(fā)體系的“非數(shù)據(jù)專家用戶”能夠便捷地使用數(shù)據(jù)驅(qū)動煙草研發(fā)業(yè)務(wù),需要大數(shù)據(jù)平臺向下能夠匯聚、處理繁雜的研發(fā)體系數(shù)據(jù),向上能夠提供簡便的數(shù)據(jù)分析應(yīng)用與接口服務(wù)。因此,平臺總體采用分層架構(gòu),為頂層“非數(shù)據(jù)專家用戶”提供簡便的數(shù)據(jù)分析應(yīng)用與接口服務(wù),同時封裝底層的數(shù)據(jù)匯聚、數(shù)據(jù)存儲、主題數(shù)據(jù)服務(wù)等功能模塊以及算法庫與分析服務(wù)。以此,避免用戶直面繁雜的研發(fā)體系數(shù)據(jù),同時降低用戶對大數(shù)據(jù)分析的技術(shù)要求。
平臺分層結(jié)構(gòu)設(shè)計如圖1所示。
圖1 平臺總體架構(gòu)圖
平臺的總體分層架構(gòu)包含如下特征:
1) 基礎(chǔ)資源層采用Hadoop開源分布式架構(gòu),整合煙草企業(yè)現(xiàn)有硬件資產(chǎn)。
2) 中間服務(wù)層包括數(shù)據(jù)自動匯聚、數(shù)據(jù)存儲管理、主題數(shù)據(jù)服務(wù)、數(shù)據(jù)分析服務(wù)4大模塊,自動采集煙草研發(fā)相關(guān)數(shù)據(jù),實現(xiàn)繁雜數(shù)據(jù)的存儲管理,梳理數(shù)據(jù)間血緣關(guān)系與提供主題化規(guī)范數(shù)據(jù)服務(wù),提供機器學(xué)習(xí)算法庫與分析服務(wù)。
3) 應(yīng)用服務(wù)層靈活組合下層數(shù)據(jù)服務(wù)與分析服務(wù),設(shè)計拖拽式的數(shù)據(jù)分析工具,簡化數(shù)據(jù)分析與挖掘服務(wù);構(gòu)建全面restful接口,提供數(shù)據(jù)支撐和服務(wù)。
4) 平臺采用分層模式,通過上層應(yīng)用對底層服務(wù)的封裝,避免用戶直面復(fù)雜的大數(shù)據(jù)分析技術(shù)和繁雜的煙草研發(fā)數(shù)據(jù),降低用戶的大數(shù)據(jù)分析技術(shù)要求。
基于上述分層架構(gòu),實現(xiàn)面向業(yè)務(wù)用戶的數(shù)據(jù)分析需求。
數(shù)據(jù)自動匯聚、主題數(shù)據(jù)服務(wù)與數(shù)據(jù)分析編排器,能夠?qū)崿F(xiàn)數(shù)據(jù)采集自動化、數(shù)據(jù)管理規(guī)范化與數(shù)據(jù)分析操作簡便化,是簡化用戶大數(shù)據(jù)分析操作的關(guān)鍵功能。
平臺管理員可根據(jù)數(shù)據(jù)源、數(shù)據(jù)類型特點,選擇全量與增量接入的方式創(chuàng)建數(shù)據(jù)采集任務(wù)。該平臺的調(diào)度管理服務(wù)會根據(jù)每個任務(wù)所設(shè)計好的處理過程和計劃時間按規(guī)則分別進行調(diào)度,將數(shù)據(jù)接入平臺。
數(shù)據(jù)自動匯聚功能的技術(shù)架構(gòu)如圖2所示。
圖2 數(shù)據(jù)自動采集功能技術(shù)架構(gòu)圖
該平臺利用Airflow作為整體的流程調(diào)度引擎。任務(wù)通過下發(fā)的方式注冊到zookeeper上,并由部署在多個節(jié)點上監(jiān)聽的Spark服務(wù)進行實際的ETL操作。待抽取任務(wù)結(jié)束,Airflow會再次推送一個統(tǒng)計任務(wù)給Spark服務(wù),以供后續(xù)分析和BI直接使用。
其中,Airflow是一款由Airbnb公司開源的,利用Python編寫的可編程、調(diào)度和監(jiān)控的工作流平臺(http://airflow.apache.org/),同時其也是Apache基金會的頂級項目(Hadoop、Spark、Hive等都在其列)。實際部署中,平臺針對云南中煙技術(shù)中心的實際需求,對Airflow進行了定制化開發(fā),即進行了漢化和本地時區(qū)轉(zhuǎn)化,新增了部分適配服務(wù)以便能更好地和數(shù)據(jù)中心進行整合。
數(shù)據(jù)抽取的過程支持全量同步和增量更新。利用Spark的資源優(yōu)勢和針對不同數(shù)據(jù)源的自適配,該平臺可以高效地進行數(shù)據(jù)的抽取工作。依據(jù)所開發(fā)的統(tǒng)一且可配置的抽取流程邏輯,平臺可以簡便地配置一個或批量新增多個接入流程。
數(shù)據(jù)抽取規(guī)則如下:
當(dāng)全量接入時,平臺從內(nèi)部自行進行當(dāng)前數(shù)據(jù)和已有數(shù)據(jù)的比對,從而獲取本次抽取數(shù)據(jù)的增量情況。同時,增量數(shù)據(jù)并入已有的數(shù)據(jù)集。全量抽取規(guī)則流程如圖3所示。
圖3 全量抽取規(guī)則
當(dāng)增量接入時,根據(jù)原始數(shù)據(jù)的時間戳/序列號獲取新數(shù)據(jù),并接入到當(dāng)前數(shù)據(jù)集內(nèi)。增量抽取規(guī)則流程如圖4所示。
圖4 增量抽取規(guī)則
數(shù)據(jù)抽取的結(jié)果以parquet的格式存儲在Hive內(nèi),存儲媒介采用hudi。hudi是由Uber公司開源并在2019年年初成為Apache基金會孵化項目的一個SparkHive組件庫(https://hudi.apache.org/)。利用hudi的特性,該平臺可以針對存儲在Hive上的數(shù)據(jù)進行可靠并且高效的更新、刪除操作。同時也讓這些數(shù)據(jù)支持了回滾和存儲點等一些關(guān)系型數(shù)據(jù)庫的特性。與此同時,hudi也源生支持SparkSQL,這讓整個平臺中數(shù)據(jù)的使用更加便捷。
其中,hudi的存儲采用了名為COPY ON WRITE的模式。它是一種注重讀取效率的數(shù)據(jù)存儲模式,其具體的實現(xiàn)機理是針對存儲在HDFS上的每個Parquet文件以“文件名_順序號_時間戳.parquet”的形式命名。數(shù)據(jù)在存儲時已排好序,當(dāng)新數(shù)據(jù)到來時會先檢索文件的位置,之后復(fù)制原始文件的數(shù)據(jù)并與新數(shù)據(jù)做整合,生成的新文件的文件名一致,時間戳更新為當(dāng)前時間,這樣便保留了更新前數(shù)據(jù)的快照和更新后的新文件。讀取數(shù)據(jù)的時候,hudi會根據(jù)指定的時間來篩選過濾所需要的文件,從而達(dá)到獲取指定時間數(shù)據(jù)快照的目的。
通過上述設(shè)計和技術(shù)實現(xiàn),能夠便捷地設(shè)置采集任務(wù),定制化地設(shè)置采集方式和采集計劃,同時,也可通過不同時間的數(shù)據(jù)快照實現(xiàn)數(shù)據(jù)比對功能,從而能夠?qū)崟r查看數(shù)據(jù)采集情況。對于云南中煙研發(fā)數(shù)據(jù)多源異構(gòu)、來源繁雜的特點,可以通過上述功能實時查看不同來源的數(shù)據(jù)采集情況,從而定制化地設(shè)定采集任務(wù)。
除進行比對外,還可以通過統(tǒng)計任務(wù)對抽取數(shù)據(jù)的結(jié)果增量進行多維度的統(tǒng)計,包括數(shù)據(jù)的增量情況、空值率(每個空值行數(shù)占當(dāng)前列總行數(shù)的比率)、健康度(所有列非空值率的)、字段飽和比(一個表列都有值的個數(shù)/所有列的個數(shù))、數(shù)據(jù)集中度(總數(shù)排名前20的表的總數(shù)占總體的比率)等。
相應(yīng)的統(tǒng)計數(shù)據(jù)可提供到云南中煙其他業(yè)務(wù)系統(tǒng)中進行展現(xiàn),如圖5和圖6所示。
圖5 統(tǒng)計數(shù)據(jù)展現(xiàn)示例一
圖6 統(tǒng)計數(shù)據(jù)展現(xiàn)示例二
主題數(shù)據(jù)服務(wù)功能可自動梳理不同源數(shù)據(jù)間血緣,挖掘原始數(shù)據(jù)至主題數(shù)據(jù)的映射關(guān)系,避免“業(yè)務(wù)專家”用戶直面繁雜的原始數(shù)據(jù),便于用戶理解、使用和管理繁雜的煙草研發(fā)數(shù)據(jù)。
主題數(shù)據(jù)服務(wù)功能技術(shù)架構(gòu)如圖7所示。
圖7 主題數(shù)據(jù)管理功能技術(shù)架構(gòu)圖
血緣梳理模塊根據(jù)用戶選定主題,基于數(shù)據(jù)表字段信息,從數(shù)據(jù)庫和數(shù)據(jù)表兩個層次梳理不同源數(shù)據(jù)間血緣關(guān)系,構(gòu)建分層數(shù)據(jù)血緣關(guān)系拓?fù)鋱D。
邏輯映射模塊根據(jù)數(shù)據(jù)血緣關(guān)系,將繁雜的煙草研發(fā)體系原始數(shù)據(jù)映射至緊扣主題、關(guān)系清晰的主題數(shù)據(jù),將原始數(shù)據(jù)權(quán)限規(guī)則轉(zhuǎn)換為主題數(shù)據(jù)權(quán)限規(guī)則。
在數(shù)據(jù)權(quán)限上,該平臺引用了Ranger(https://ranger.apache.org/)作為整個大數(shù)據(jù)平臺的權(quán)限管理服務(wù)。在平臺的構(gòu)建過程中, Hive數(shù)據(jù)庫與平臺的用戶體系(認(rèn)證)掛鉤,利用Ranger的數(shù)據(jù)權(quán)限的功能(可針對到庫、表、字段甚至行一級別),管理者可以很好地控制平臺用戶的數(shù)據(jù)使用權(quán)限,對應(yīng)用戶只能看到被分配的數(shù)據(jù),并且可對敏感數(shù)據(jù)進行加密或者去除,保障了數(shù)據(jù)資產(chǎn)的安全性。
通過數(shù)據(jù)主題服務(wù),能夠?qū)煵菅邪l(fā)業(yè)務(wù)中的如原料、配方、材輔料等某一主題相關(guān)的數(shù)據(jù)從來源繁雜、多源異構(gòu)的狀態(tài),轉(zhuǎn)化為標(biāo)準(zhǔn)、統(tǒng)一的主題數(shù)據(jù),從而便于“非數(shù)據(jù)專家用戶”理解及使用。
平臺提供了可視化的數(shù)據(jù)編排工具,用戶可以根據(jù)自己的需求以及邏輯使用編排器提供的組件自由組合和處理數(shù)據(jù)。這樣的設(shè)計可以有效地降低用戶對大數(shù)據(jù)分析技術(shù)的要求,簡化大數(shù)據(jù)分析過程的操作,使得“非數(shù)據(jù)專家用戶”也能便捷地使用該服務(wù)。
圖8為通過編排器生成的一個主題數(shù)據(jù)的流程圖。編排器上的每個節(jié)點為針對數(shù)據(jù)進行的一個細(xì)粒度的操作,編排器在執(zhí)行時會將這些節(jié)點組合起來形成一個有向無環(huán)的流程圖,并發(fā)送給Spark成為各自的算子。在編排器的任務(wù)執(zhí)行時,Spark會調(diào)用相應(yīng)數(shù)據(jù)與分析算法運行數(shù)據(jù)分析處理邏輯,返回分析處理結(jié)果在可視化編輯層展示。
圖8 數(shù)據(jù)編排器示例圖
經(jīng)過分析處理后的結(jié)果會以Parquet的形式回存到數(shù)據(jù)平臺內(nèi)部,并可以在前臺構(gòu)建成為數(shù)據(jù)緩存或者可視化組件的數(shù)據(jù)源,用以提供后續(xù)再編排或者實際用戶的分析使用。
數(shù)據(jù)分析編排器整體技術(shù)框架如圖9所示。
圖9 數(shù)據(jù)分析編排器整體技術(shù)框架
數(shù)據(jù)編排器與前置的功能緊密結(jié)合,同時,構(gòu)建編排來源的輸入節(jié)點與來源數(shù)據(jù)的變化直接掛鉤。除了可以自己制定任務(wù)編排的執(zhí)行計劃時間以外,當(dāng)某個數(shù)據(jù)匯聚的任務(wù)結(jié)束或者已有的主題數(shù)據(jù)重新生成的時候,平臺會對任何引用了對應(yīng)數(shù)據(jù)的編排任務(wù)進行自動更新,并重啟該任務(wù)刷新已有的輸出結(jié)果。數(shù)據(jù)分析編排工具的底層在輸出到主題數(shù)據(jù)的同時也會自動構(gòu)建主題的血緣關(guān)系,以達(dá)到自動化構(gòu)建映射關(guān)系的目的。
數(shù)據(jù)分析編排器可讓“非數(shù)據(jù)專家用戶”便捷地實現(xiàn)數(shù)據(jù)的分析及圖形化編排,對于云南中煙的研發(fā)數(shù)據(jù)體系,用戶即可對原料、配方、材輔料等某一主題的數(shù)據(jù)進行編排分析,也可實現(xiàn)對多個主題數(shù)據(jù)的交叉編排分析,從而為真正實現(xiàn)數(shù)據(jù)驅(qū)動研發(fā)業(yè)務(wù)提供了應(yīng)用基礎(chǔ)。
以云南中煙煙草研發(fā)體系數(shù)據(jù)為例,構(gòu)建滿足上述功能的大數(shù)據(jù)分析云平臺,自動匯聚原料綜管、精益研發(fā)、煙葉配方、主數(shù)據(jù)管理等13個信息系統(tǒng),共計259億余條數(shù)據(jù),梳理物料管理、實驗室管理等主題業(yè)務(wù)的數(shù)據(jù)血緣關(guān)系并構(gòu)建相應(yīng)主題數(shù)據(jù)庫,完成“實驗室數(shù)據(jù)分析”“物料管理優(yōu)化”“原料庫存結(jié)構(gòu)優(yōu)化”等多個業(yè)務(wù)場景的大數(shù)據(jù)分析應(yīng)用。
以“實驗室數(shù)據(jù)分析”應(yīng)用為例,對面向用戶的云南中煙煙草研發(fā)體系大數(shù)據(jù)云平臺的應(yīng)用流程與應(yīng)用結(jié)果進行實例驗證。
“實驗室數(shù)據(jù)分析”應(yīng)用實例(簡稱“應(yīng)用實例”),綜合各類型實驗室監(jiān)測數(shù)據(jù)分析,分析卷煙生產(chǎn)質(zhì)量及其監(jiān)控現(xiàn)狀,了解卷煙質(zhì)量監(jiān)控實際情況,實時分析實驗室設(shè)備的使用情況、使用飽和度等,以保障卷煙產(chǎn)品質(zhì)量、風(fēng)格穩(wěn)定,是一個典型的大數(shù)據(jù)分析應(yīng)用場景。
3.2.1數(shù)據(jù)自動匯聚
“實驗室數(shù)據(jù)分析”應(yīng)用實例的數(shù)據(jù)來源主要為實驗室信息管理系統(tǒng),數(shù)據(jù)自動匯聚方案設(shè)計如表1所示。
表1 實驗室信息管理系統(tǒng)數(shù)據(jù)自動匯聚方案
3.2.2血緣關(guān)系分析
卷煙及其原料、香精香料、物料等相關(guān)的理化實驗檢測結(jié)果數(shù)據(jù),均通過實驗分析過程獲取,為此,以“實驗編號”集合為主題“源”數(shù)據(jù),自動梳理應(yīng)用實例相關(guān)的數(shù)據(jù)后所得到的血緣關(guān)系如圖10所示。
圖10 數(shù)據(jù)血緣關(guān)系拓?fù)涫纠?/p>
3.2.3流程編排運行
采用數(shù)據(jù)分析編排器,以拖拽的方式,構(gòu)建如圖8所示的應(yīng)用實例的數(shù)據(jù)分析處理邏輯。經(jīng)過圖9所示的應(yīng)用實例中的各項數(shù)據(jù)編排處理后,可通過平臺內(nèi)可視化組件形成如圖11所示的可視化表達(dá)結(jié)果。具體地,通過可視化呈現(xiàn)了實驗室的各類統(tǒng)計數(shù)據(jù),如人員統(tǒng)計、設(shè)備統(tǒng)計、生產(chǎn)報告、承接任務(wù)統(tǒng)計等。另外,可以進一步查看實驗室設(shè)備的使用飽和度及貢獻度,同時,對各項檢測指標(biāo)進行分析,可以得到各卷煙廠產(chǎn)品的物理指標(biāo)穩(wěn)定性及化學(xué)指標(biāo)穩(wěn)定性情況。
圖11 可視化分析結(jié)果的展示界面
本文以“實驗室數(shù)據(jù)分析”為實例,自動匯聚LIMS系統(tǒng)中的卷煙原料、香精香料、物料的理化實驗檢測數(shù)據(jù),與實驗相關(guān)的人、機、物、料、環(huán)管理數(shù)據(jù),以“實驗編號”集合為主題源數(shù)據(jù),自動梳理應(yīng)用實例相關(guān)數(shù)據(jù)血緣關(guān)系,采用數(shù)據(jù)分析編排器,構(gòu)建并自動執(zhí)行應(yīng)用實例的數(shù)據(jù)分析處理邏輯,得到應(yīng)用實例的大數(shù)據(jù)分析結(jié)果。
應(yīng)用實例的分析過程與分析結(jié)果表明,面向用戶的煙草研發(fā)體系大數(shù)據(jù)分析云平臺,采用分層架構(gòu),實現(xiàn)上層應(yīng)用對底層服務(wù)的封裝。其中,上層應(yīng)用使用拖拽式數(shù)據(jù)分析處理流程編排,封裝復(fù)雜的大數(shù)據(jù)分析算法技術(shù)和繁雜的煙草研發(fā)體系數(shù)據(jù),降低用戶使用大數(shù)據(jù)分析技術(shù)驅(qū)動煙草研發(fā)業(yè)務(wù)發(fā)展的技術(shù)要求。底層服務(wù)的數(shù)據(jù)自動匯聚方案根據(jù)預(yù)設(shè)數(shù)據(jù)采集模式,自動匯聚煙草研發(fā)原始數(shù)據(jù),無須用戶主動干預(yù);主題數(shù)據(jù)服務(wù)根據(jù)用戶指定主題,自動梳理主題數(shù)據(jù)血緣關(guān)系,構(gòu)建主題數(shù)據(jù)庫,為用戶提供規(guī)范化的數(shù)據(jù)管理與應(yīng)用服務(wù)。
煙草研發(fā)業(yè)務(wù)環(huán)節(jié)眾多,涵蓋配方、原料、煙用材料、調(diào)香、工藝、消費行為等方面,各業(yè)務(wù)平臺系統(tǒng)復(fù)雜多樣,數(shù)據(jù)異構(gòu)異質(zhì)。如何梳理研發(fā)業(yè)務(wù)中所產(chǎn)生的海量數(shù)據(jù),盤活數(shù)據(jù)資產(chǎn),是行業(yè)內(nèi)目前面臨的一個課題。
本文所構(gòu)建的面向煙草行業(yè)研發(fā)應(yīng)用的大數(shù)據(jù)分析平臺,采用了分層架構(gòu)體系以及下層服務(wù)對上層應(yīng)用透明機制。概括來說,本文所述大數(shù)據(jù)分析平臺的構(gòu)建,具有幾個方面的典型特點,即數(shù)據(jù)自動采集功能可屏蔽業(yè)務(wù)數(shù)據(jù)來源、數(shù)據(jù)類型的復(fù)雜性,面向業(yè)務(wù)的
主題數(shù)據(jù)管理功能可簡化對海量復(fù)雜數(shù)據(jù)的管理,可視化數(shù)據(jù)分析編排器則能夠封裝各類型復(fù)雜數(shù)據(jù)分析算法及其數(shù)據(jù)分析應(yīng)用。
通過上述體系及機制,可讓用戶在基于該平臺進行煙草研發(fā)數(shù)據(jù)的分析挖掘時,更專注于研發(fā)業(yè)務(wù)本身,有利于大數(shù)據(jù)分析技術(shù)在煙草研發(fā)體系中的推廣應(yīng)用,為煙草研發(fā)體系業(yè)務(wù)的發(fā)展提供了可落地應(yīng)用的手段和方法。與此同時,本文所提出的大數(shù)據(jù)平臺的構(gòu)建和實施機制為類似的大數(shù)據(jù)業(yè)務(wù)場景提供了參考和借鑒。