張海濤 薛 翔
1(云南中煙工業有限責任公司 云南 昆明 650231)2(大連達碩信息技術有限公司 遼寧 大連 116023)
大數據背景下,數據驅動煙草業務發展已成為普遍共識[1-2],大數據分析技術在煙草研發領域的應用已成為研究熱點,諸多理論研究成果應運而生[3-6]。同時,也產生了許多應用于煙草領域的數據云平臺的研究與開發。例如:鄒暾等[7]針對煙草業務特點,設計靈活可快速部署的煙草企業云平臺架構;陳力等[8]構建私有云平臺,整合煙草企業相關軟、硬件資源,解決業務系統分散獨立、整合難的問題;張君等[9]借助云平臺,重構煙草企業創新流程;李益文[10]利用云平臺服務,實現通省級煙草基礎資源的多層級、統一管理調度。
上述研究是大數據分析技術在煙草領域應用的有益探索,但目前行業內,整合煙草研發業務多源異構數據進行煙草研發業務分析的成功案例較少。究其原因,煙草研發業務廣泛的特點,導致煙草研發數據體量大、類型繁雜、存儲分散的問題,精通卷煙研發業務的行業專家難以利用上述龐雜的數據有效挖掘價值,最終影響大數據分析技術在研發體系中的應用成效。
針對煙草研發體系的業務、數據、用戶的特點,采用分層技術架構,構建面向用戶的煙草研發體系大數據云平臺,封裝數據采集與存儲,規范數據管理,簡化數據分析流程,讓煙草研發體系的“非數據專家用戶”更專注于煙草研發業務本身,避免用戶直面復雜的大數據分析技術和龐雜的煙草研發原始數據,降低用戶大數據分析技術要求,是讓煙草研發人員實現利用數據驅動煙草研發業務的重要探索和嘗試。
要實現讓煙草研發體系的“非數據專家用戶”能夠便捷地使用數據驅動煙草研發業務,需要大數據平臺向下能夠匯聚、處理繁雜的研發體系數據,向上能夠提供簡便的數據分析應用與接口服務。因此,平臺總體采用分層架構,為頂層“非數據專家用戶”提供簡便的數據分析應用與接口服務,同時封裝底層的數據匯聚、數據存儲、主題數據服務等功能模塊以及算法庫與分析服務。以此,避免用戶直面繁雜的研發體系數據,同時降低用戶對大數據分析的技術要求。
平臺分層結構設計如圖1所示。

圖1 平臺總體架構圖
平臺的總體分層架構包含如下特征:
1) 基礎資源層采用Hadoop開源分布式架構,整合煙草企業現有硬件資產。
2) 中間服務層包括數據自動匯聚、數據存儲管理、主題數據服務、數據分析服務4大模塊,自動采集煙草研發相關數據,實現繁雜數據的存儲管理,梳理數據間血緣關系與提供主題化規范數據服務,提供機器學習算法庫與分析服務。
3) 應用服務層靈活組合下層數據服務與分析服務,設計拖拽式的數據分析工具,簡化數據分析與挖掘服務;構建全面restful接口,提供數據支撐和服務。
4) 平臺采用分層模式,通過上層應用對底層服務的封裝,避免用戶直面復雜的大數據分析技術和繁雜的煙草研發數據,降低用戶的大數據分析技術要求。
基于上述分層架構,實現面向業務用戶的數據分析需求。
數據自動匯聚、主題數據服務與數據分析編排器,能夠實現數據采集自動化、數據管理規范化與數據分析操作簡便化,是簡化用戶大數據分析操作的關鍵功能。
平臺管理員可根據數據源、數據類型特點,選擇全量與增量接入的方式創建數據采集任務。該平臺的調度管理服務會根據每個任務所設計好的處理過程和計劃時間按規則分別進行調度,將數據接入平臺。
數據自動匯聚功能的技術架構如圖2所示。

圖2 數據自動采集功能技術架構圖
該平臺利用Airflow作為整體的流程調度引擎。任務通過下發的方式注冊到zookeeper上,并由部署在多個節點上監聽的Spark服務進行實際的ETL操作。待抽取任務結束,Airflow會再次推送一個統計任務給Spark服務,以供后續分析和BI直接使用。
其中,Airflow是一款由Airbnb公司開源的,利用Python編寫的可編程、調度和監控的工作流平臺(http://airflow.apache.org/),同時其也是Apache基金會的頂級項目(Hadoop、Spark、Hive等都在其列)。實際部署中,平臺針對云南中煙技術中心的實際需求,對Airflow進行了定制化開發,即進行了漢化和本地時區轉化,新增了部分適配服務以便能更好地和數據中心進行整合。
數據抽取的過程支持全量同步和增量更新。利用Spark的資源優勢和針對不同數據源的自適配,該平臺可以高效地進行數據的抽取工作。依據所開發的統一且可配置的抽取流程邏輯,平臺可以簡便地配置一個或批量新增多個接入流程。
數據抽取規則如下:
當全量接入時,平臺從內部自行進行當前數據和已有數據的比對,從而獲取本次抽取數據的增量情況。同時,增量數據并入已有的數據集。全量抽取規則流程如圖3所示。

圖3 全量抽取規則
當增量接入時,根據原始數據的時間戳/序列號獲取新數據,并接入到當前數據集內。增量抽取規則流程如圖4所示。

圖4 增量抽取規則
數據抽取的結果以parquet的格式存儲在Hive內,存儲媒介采用hudi。hudi是由Uber公司開源并在2019年年初成為Apache基金會孵化項目的一個SparkHive組件庫(https://hudi.apache.org/)。利用hudi的特性,該平臺可以針對存儲在Hive上的數據進行可靠并且高效的更新、刪除操作。同時也讓這些數據支持了回滾和存儲點等一些關系型數據庫的特性。與此同時,hudi也源生支持SparkSQL,這讓整個平臺中數據的使用更加便捷。
其中,hudi的存儲采用了名為COPY ON WRITE的模式。它是一種注重讀取效率的數據存儲模式,其具體的實現機理是針對存儲在HDFS上的每個Parquet文件以“文件名_順序號_時間戳.parquet”的形式命名。數據在存儲時已排好序,當新數據到來時會先檢索文件的位置,之后復制原始文件的數據并與新數據做整合,生成的新文件的文件名一致,時間戳更新為當前時間,這樣便保留了更新前數據的快照和更新后的新文件。讀取數據的時候,hudi會根據指定的時間來篩選過濾所需要的文件,從而達到獲取指定時間數據快照的目的。
通過上述設計和技術實現,能夠便捷地設置采集任務,定制化地設置采集方式和采集計劃,同時,也可通過不同時間的數據快照實現數據比對功能,從而能夠實時查看數據采集情況。對于云南中煙研發數據多源異構、來源繁雜的特點,可以通過上述功能實時查看不同來源的數據采集情況,從而定制化地設定采集任務。
除進行比對外,還可以通過統計任務對抽取數據的結果增量進行多維度的統計,包括數據的增量情況、空值率(每個空值行數占當前列總行數的比率)、健康度(所有列非空值率的)、字段飽和比(一個表列都有值的個數/所有列的個數)、數據集中度(總數排名前20的表的總數占總體的比率)等。
相應的統計數據可提供到云南中煙其他業務系統中進行展現,如圖5和圖6所示。

圖5 統計數據展現示例一

圖6 統計數據展現示例二
主題數據服務功能可自動梳理不同源數據間血緣,挖掘原始數據至主題數據的映射關系,避免“業務專家”用戶直面繁雜的原始數據,便于用戶理解、使用和管理繁雜的煙草研發數據。
主題數據服務功能技術架構如圖7所示。

圖7 主題數據管理功能技術架構圖
血緣梳理模塊根據用戶選定主題,基于數據表字段信息,從數據庫和數據表兩個層次梳理不同源數據間血緣關系,構建分層數據血緣關系拓撲圖。
邏輯映射模塊根據數據血緣關系,將繁雜的煙草研發體系原始數據映射至緊扣主題、關系清晰的主題數據,將原始數據權限規則轉換為主題數據權限規則。
在數據權限上,該平臺引用了Ranger(https://ranger.apache.org/)作為整個大數據平臺的權限管理服務。在平臺的構建過程中, Hive數據庫與平臺的用戶體系(認證)掛鉤,利用Ranger的數據權限的功能(可針對到庫、表、字段甚至行一級別),管理者可以很好地控制平臺用戶的數據使用權限,對應用戶只能看到被分配的數據,并且可對敏感數據進行加密或者去除,保障了數據資產的安全性。
通過數據主題服務,能夠將煙草研發業務中的如原料、配方、材輔料等某一主題相關的數據從來源繁雜、多源異構的狀態,轉化為標準、統一的主題數據,從而便于“非數據專家用戶”理解及使用。
平臺提供了可視化的數據編排工具,用戶可以根據自己的需求以及邏輯使用編排器提供的組件自由組合和處理數據。這樣的設計可以有效地降低用戶對大數據分析技術的要求,簡化大數據分析過程的操作,使得“非數據專家用戶”也能便捷地使用該服務。
圖8為通過編排器生成的一個主題數據的流程圖。編排器上的每個節點為針對數據進行的一個細粒度的操作,編排器在執行時會將這些節點組合起來形成一個有向無環的流程圖,并發送給Spark成為各自的算子。在編排器的任務執行時,Spark會調用相應數據與分析算法運行數據分析處理邏輯,返回分析處理結果在可視化編輯層展示。

圖8 數據編排器示例圖
經過分析處理后的結果會以Parquet的形式回存到數據平臺內部,并可以在前臺構建成為數據緩存或者可視化組件的數據源,用以提供后續再編排或者實際用戶的分析使用。
數據分析編排器整體技術框架如圖9所示。

圖9 數據分析編排器整體技術框架
數據編排器與前置的功能緊密結合,同時,構建編排來源的輸入節點與來源數據的變化直接掛鉤。除了可以自己制定任務編排的執行計劃時間以外,當某個數據匯聚的任務結束或者已有的主題數據重新生成的時候,平臺會對任何引用了對應數據的編排任務進行自動更新,并重啟該任務刷新已有的輸出結果。數據分析編排工具的底層在輸出到主題數據的同時也會自動構建主題的血緣關系,以達到自動化構建映射關系的目的。
數據分析編排器可讓“非數據專家用戶”便捷地實現數據的分析及圖形化編排,對于云南中煙的研發數據體系,用戶即可對原料、配方、材輔料等某一主題的數據進行編排分析,也可實現對多個主題數據的交叉編排分析,從而為真正實現數據驅動研發業務提供了應用基礎。
以云南中煙煙草研發體系數據為例,構建滿足上述功能的大數據分析云平臺,自動匯聚原料綜管、精益研發、煙葉配方、主數據管理等13個信息系統,共計259億余條數據,梳理物料管理、實驗室管理等主題業務的數據血緣關系并構建相應主題數據庫,完成“實驗室數據分析”“物料管理優化”“原料庫存結構優化”等多個業務場景的大數據分析應用。
以“實驗室數據分析”應用為例,對面向用戶的云南中煙煙草研發體系大數據云平臺的應用流程與應用結果進行實例驗證。
“實驗室數據分析”應用實例(簡稱“應用實例”),綜合各類型實驗室監測數據分析,分析卷煙生產質量及其監控現狀,了解卷煙質量監控實際情況,實時分析實驗室設備的使用情況、使用飽和度等,以保障卷煙產品質量、風格穩定,是一個典型的大數據分析應用場景。
3.2.1數據自動匯聚
“實驗室數據分析”應用實例的數據來源主要為實驗室信息管理系統,數據自動匯聚方案設計如表1所示。

表1 實驗室信息管理系統數據自動匯聚方案
3.2.2血緣關系分析
卷煙及其原料、香精香料、物料等相關的理化實驗檢測結果數據,均通過實驗分析過程獲取,為此,以“實驗編號”集合為主題“源”數據,自動梳理應用實例相關的數據后所得到的血緣關系如圖10所示。

圖10 數據血緣關系拓撲示例
3.2.3流程編排運行
采用數據分析編排器,以拖拽的方式,構建如圖8所示的應用實例的數據分析處理邏輯。經過圖9所示的應用實例中的各項數據編排處理后,可通過平臺內可視化組件形成如圖11所示的可視化表達結果。具體地,通過可視化呈現了實驗室的各類統計數據,如人員統計、設備統計、生產報告、承接任務統計等。另外,可以進一步查看實驗室設備的使用飽和度及貢獻度,同時,對各項檢測指標進行分析,可以得到各卷煙廠產品的物理指標穩定性及化學指標穩定性情況。

圖11 可視化分析結果的展示界面
本文以“實驗室數據分析”為實例,自動匯聚LIMS系統中的卷煙原料、香精香料、物料的理化實驗檢測數據,與實驗相關的人、機、物、料、環管理數據,以“實驗編號”集合為主題源數據,自動梳理應用實例相關數據血緣關系,采用數據分析編排器,構建并自動執行應用實例的數據分析處理邏輯,得到應用實例的大數據分析結果。
應用實例的分析過程與分析結果表明,面向用戶的煙草研發體系大數據分析云平臺,采用分層架構,實現上層應用對底層服務的封裝。其中,上層應用使用拖拽式數據分析處理流程編排,封裝復雜的大數據分析算法技術和繁雜的煙草研發體系數據,降低用戶使用大數據分析技術驅動煙草研發業務發展的技術要求。底層服務的數據自動匯聚方案根據預設數據采集模式,自動匯聚煙草研發原始數據,無須用戶主動干預;主題數據服務根據用戶指定主題,自動梳理主題數據血緣關系,構建主題數據庫,為用戶提供規范化的數據管理與應用服務。
煙草研發業務環節眾多,涵蓋配方、原料、煙用材料、調香、工藝、消費行為等方面,各業務平臺系統復雜多樣,數據異構異質。如何梳理研發業務中所產生的海量數據,盤活數據資產,是行業內目前面臨的一個課題。
本文所構建的面向煙草行業研發應用的大數據分析平臺,采用了分層架構體系以及下層服務對上層應用透明機制。概括來說,本文所述大數據分析平臺的構建,具有幾個方面的典型特點,即數據自動采集功能可屏蔽業務數據來源、數據類型的復雜性,面向業務的
主題數據管理功能可簡化對海量復雜數據的管理,可視化數據分析編排器則能夠封裝各類型復雜數據分析算法及其數據分析應用。
通過上述體系及機制,可讓用戶在基于該平臺進行煙草研發數據的分析挖掘時,更專注于研發業務本身,有利于大數據分析技術在煙草研發體系中的推廣應用,為煙草研發體系業務的發展提供了可落地應用的手段和方法。與此同時,本文所提出的大數據平臺的構建和實施機制為類似的大數據業務場景提供了參考和借鑒。