郝曉偉,武漢偉,高旭瑞,劉秀
(國(guó)網(wǎng)山西省電力公司信息通信分公司,山西,太原 030021)
傳統(tǒng)的數(shù)據(jù)平臺(tái)基于簡(jiǎn)單的總體架構(gòu),完成數(shù)據(jù)導(dǎo)入、整理多維數(shù)據(jù)集合簡(jiǎn)單的數(shù)據(jù)分析[1]。當(dāng)前傳統(tǒng)的數(shù)據(jù)平臺(tái)是單節(jié)點(diǎn),數(shù)據(jù)存儲(chǔ)容量不大,只能對(duì)結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行處理,面對(duì)海量的異構(gòu)數(shù)據(jù)時(shí),一些數(shù)據(jù)源無(wú)法涉及[2]。
針對(duì)上述存在的問(wèn)題,文獻(xiàn)[3]將Hadoop與傳統(tǒng)數(shù)據(jù)平臺(tái)相結(jié)合,將采集到的數(shù)據(jù)存儲(chǔ)在Hadoop平臺(tái)中,減輕了傳統(tǒng)數(shù)據(jù)平臺(tái)的壓力,但由于是傳統(tǒng)的單一服務(wù)器關(guān)系型數(shù)據(jù)庫(kù),數(shù)據(jù)平臺(tái)調(diào)用和分析處理數(shù)據(jù)的效率還有待提高。文獻(xiàn)[4]構(gòu)建Spark大數(shù)據(jù)平臺(tái),對(duì)系統(tǒng)日志數(shù)據(jù)標(biāo)準(zhǔn)化、過(guò)濾合并分析,并統(tǒng)一存儲(chǔ)和管理,對(duì)信息進(jìn)行統(tǒng)計(jì)和離線分析,但系統(tǒng)的數(shù)據(jù)采集模塊格式單一,有些系統(tǒng)數(shù)據(jù)的格式和種類會(huì)出現(xiàn)不兼容的現(xiàn)象。
針對(duì)上述研究中存在的不足,本研究對(duì)業(yè)務(wù)流中數(shù)據(jù)的層級(jí)和結(jié)構(gòu)進(jìn)行了設(shè)計(jì),不同的數(shù)據(jù)層包括有不同業(yè)務(wù)功能的數(shù)據(jù)。中臺(tái)架構(gòu)的數(shù)據(jù)平臺(tái)分為數(shù)據(jù)采集模塊、標(biāo)簽化模塊和數(shù)據(jù)開發(fā)模塊標(biāo)簽化模塊和數(shù)據(jù)開發(fā)模塊。
數(shù)據(jù)的中臺(tái)架構(gòu)為完成系統(tǒng)業(yè)務(wù)數(shù)據(jù)的層級(jí)分割和水平解耦,將公共業(yè)務(wù)數(shù)據(jù)入口獨(dú)立出來(lái),通過(guò)數(shù)據(jù)層的數(shù)據(jù)模型實(shí)現(xiàn)跨域數(shù)據(jù)整理和知識(shí)累積,應(yīng)用視圖和控制器實(shí)現(xiàn)構(gòu)建數(shù)據(jù)接口,進(jìn)行數(shù)據(jù)業(yè)務(wù)的開放,對(duì)數(shù)據(jù)業(yè)務(wù)的前后端應(yīng)用需求靈活部署[5]。
數(shù)據(jù)平臺(tái)對(duì)數(shù)據(jù)劃分多個(gè)層次可以更好地管理數(shù)據(jù)模型,按照數(shù)據(jù)結(jié)構(gòu)規(guī)范分層處理,數(shù)據(jù)模型將多種數(shù)據(jù)標(biāo)準(zhǔn)化,使用多維度建模。數(shù)據(jù)標(biāo)準(zhǔn)化概括為3層:基礎(chǔ)數(shù)據(jù)模型處理數(shù)據(jù);融合模型按照數(shù)據(jù)的維度進(jìn)行建模,整合多種數(shù)據(jù)類型,處理數(shù)據(jù)的形式包括整合、關(guān)聯(lián)和分解;挖掘數(shù)據(jù)模型偏向于業(yè)務(wù)層面,復(fù)用性較高的融合在中臺(tái)架構(gòu)中,作為企業(yè)的數(shù)據(jù)模型,提高了業(yè)務(wù)效率[6]。數(shù)據(jù)中臺(tái)架構(gòu)的主數(shù)據(jù)平臺(tái)對(duì)外提供統(tǒng)一的服務(wù)能力,按照應(yīng)用要求,對(duì)構(gòu)成數(shù)據(jù)根據(jù)業(yè)務(wù)場(chǎng)景進(jìn)行服務(wù)。數(shù)據(jù)服務(wù)能夠使開發(fā)人員快速訪問(wèn)和查詢數(shù)據(jù)業(yè)務(wù),數(shù)據(jù)分析人員可以進(jìn)行算法分析,包括數(shù)據(jù)模型的管理和數(shù)據(jù)結(jié)構(gòu)的分析。數(shù)據(jù)中臺(tái)架構(gòu)的主數(shù)據(jù)平臺(tái)的結(jié)構(gòu)如圖1所示。
圖1 主數(shù)據(jù)平臺(tái)結(jié)構(gòu)圖
數(shù)據(jù)平臺(tái)中,源數(shù)據(jù)和數(shù)據(jù)模型是數(shù)據(jù)中臺(tái)搭建的基礎(chǔ),數(shù)據(jù)開發(fā)是連接前臺(tái)開發(fā)重要的環(huán)節(jié)。首先是提供標(biāo)簽庫(kù),基于標(biāo)簽庫(kù)的分類區(qū)分營(yíng)銷客戶,面向業(yè)務(wù)人員。數(shù)據(jù)開發(fā)平臺(tái)面向所有用戶和SQL開發(fā)人員,提供數(shù)據(jù)訪問(wèn),將業(yè)務(wù)數(shù)據(jù)可視化處理。方便快速掌握了解數(shù)據(jù),及時(shí)發(fā)現(xiàn)透明數(shù)據(jù)動(dòng)態(tài),保護(hù)數(shù)據(jù)的安全性。在數(shù)據(jù)業(yè)務(wù)響應(yīng)過(guò)程中,共享數(shù)據(jù)服務(wù)實(shí)現(xiàn)數(shù)據(jù)共享,其中數(shù)據(jù)平臺(tái)中分層模型如表1所示。
表1 分層模型
數(shù)據(jù)模型多元化支持可視化平臺(tái),給業(yè)務(wù)決策提供數(shù)據(jù)支持,結(jié)合自身實(shí)際數(shù)據(jù)結(jié)構(gòu),對(duì)數(shù)據(jù)平臺(tái)分層劃分,不同的層次承擔(dān)不同的數(shù)據(jù)類型[7],可以更方便地進(jìn)行數(shù)據(jù)模型管理。
數(shù)據(jù)平臺(tái)中數(shù)據(jù)采集方式包括自動(dòng)爬蟲、第三方數(shù)據(jù)和手動(dòng)采集3種方式。大部分?jǐn)?shù)據(jù)由自動(dòng)爬蟲獲取,第三方數(shù)據(jù)采集的數(shù)據(jù)主要是公司企業(yè)的各項(xiàng)業(yè)務(wù)場(chǎng)景中的數(shù)據(jù)指標(biāo),這部分?jǐn)?shù)據(jù)量過(guò)大,采集過(guò)程較為復(fù)雜。數(shù)據(jù)加載是AJAX請(qǐng)求,具體數(shù)據(jù)采集實(shí)現(xiàn)過(guò)程分為3個(gè)類,如圖2所示。
圖2 數(shù)據(jù)采集模塊類圖
使用以下方法進(jìn)行數(shù)據(jù)采集:首先進(jìn)行數(shù)據(jù)請(qǐng)求時(shí),headers配置需要填充path、query_hash等關(guān)鍵詞。Cookie可以進(jìn)行一次登錄后截取修改,配置Session ID,X-IG-App-ID、X-Instagram-GIS從html中Shared Data字段中獲取。Instagram的頁(yè)面訪問(wèn)結(jié)構(gòu)不是傳統(tǒng)數(shù)據(jù)采集的線性結(jié)構(gòu),是通過(guò)cursor進(jìn)行的鏈?zhǔn)浇Y(jié)構(gòu)[8]。
數(shù)據(jù)注冊(cè)模塊對(duì)采集到的圖片數(shù)據(jù)進(jìn)行注冊(cè),將收到的圖片數(shù)據(jù)各等級(jí)業(yè)務(wù)來(lái)源信息記錄并保存,為每個(gè)圖片數(shù)據(jù)生成唯一編號(hào),分配base64存儲(chǔ)空間與索引結(jié)構(gòu)化操作。類圖如圖3所示。
數(shù)據(jù)注冊(cè)模塊和數(shù)據(jù)采集模塊之間緊密耦合,減少了數(shù)據(jù)采集占有服務(wù)器的存儲(chǔ)空間,減少了磁盤空間,防止磁盤空間溢出造成的程序崩潰。當(dāng)采集到的業(yè)務(wù)數(shù)據(jù)到達(dá)一定數(shù)量級(jí)時(shí),使用數(shù)據(jù)注冊(cè)模塊將圖像數(shù)據(jù)注冊(cè)入庫(kù),刪除本地緩存,清理出磁盤空間,保證數(shù)據(jù)采集模塊的順暢運(yùn)行。圖像數(shù)據(jù)注冊(cè)過(guò)程中,每一次圖片注冊(cè)實(shí)例化一個(gè)數(shù)據(jù)類[9],并調(diào)用該函數(shù),將圖像數(shù)據(jù)的文件名、base64、源數(shù)據(jù)引用,根據(jù)圖像的特征生產(chǎn)md5值作為數(shù)據(jù)的編碼,同時(shí)檢索數(shù)據(jù)庫(kù)中是否存在相同的數(shù)據(jù),防止數(shù)據(jù)重復(fù),引起數(shù)據(jù)調(diào)用的錯(cuò)誤。最后調(diào)用self_create_data_center_record為圖像補(bǔ)全注冊(cè)信息,并返回圖像編碼。表2為注冊(cè)模塊接口描述。
圖3 圖像數(shù)據(jù)類圖
表2 注冊(cè)模塊接口描述
數(shù)據(jù)注冊(cè)模塊使用Nginx+Gunicorn+Flask架構(gòu)部署在AWS EC2服務(wù)器節(jié)點(diǎn),利用了Nginx高并發(fā)的優(yōu)勢(shì),又利用了Gunicorn多進(jìn)程管理的優(yōu)點(diǎn),可以更快地處理多線程并發(fā)數(shù)據(jù)請(qǐng)求,為分布式數(shù)據(jù)模塊的結(jié)構(gòu)提供基礎(chǔ)。數(shù)據(jù)中臺(tái)系統(tǒng)數(shù)據(jù)標(biāo)簽庫(kù),將注冊(cè)后的圖像數(shù)據(jù)和非線性數(shù)據(jù)在dbl_garment_basic中的整個(gè)記錄傳入標(biāo)簽庫(kù),減少了數(shù)據(jù)庫(kù)IO操作的次數(shù)。
數(shù)據(jù)標(biāo)簽化模塊連接主數(shù)據(jù)平臺(tái)數(shù)據(jù)調(diào)用的后端接口,生成結(jié)構(gòu)標(biāo)簽,作為可并發(fā)調(diào)用的服務(wù)端口,分為傳參調(diào)用和空調(diào)用。
傳參調(diào)用表示數(shù)據(jù)注冊(cè)模塊接收bdl_garment_basic中的圖像信息,調(diào)用后端接口,對(duì)bdl_garment_basic中記錄updata,最后調(diào)用索引模塊,并上傳更新后的圖像數(shù)據(jù)。
空調(diào)用表示在不傳參調(diào)用時(shí),判斷數(shù)據(jù)的清理擦操作,首先對(duì)主數(shù)據(jù)平臺(tái)中沒有使用過(guò)的標(biāo)簽數(shù)據(jù)的圖像編號(hào),將獲得的記錄迭代傳給標(biāo)簽化模塊,進(jìn)行傳參調(diào)用。
傳統(tǒng)的串行化數(shù)據(jù)處理算法運(yùn)算時(shí)間過(guò)長(zhǎng),效率較低,在實(shí)際業(yè)務(wù)場(chǎng)景中無(wú)法正常使用。本研究提出設(shè)計(jì)實(shí)現(xiàn)大規(guī)模神經(jīng)網(wǎng)絡(luò)訓(xùn)練并行化算法,C Neural數(shù)據(jù)系統(tǒng)基于HBase實(shí)現(xiàn)大規(guī)模訓(xùn)練數(shù)據(jù)的分布式存儲(chǔ),減少了加載訓(xùn)練數(shù)據(jù)的時(shí)間。在使用相關(guān)業(yè)務(wù)的數(shù)據(jù)集時(shí),系統(tǒng)以并發(fā)模式讀取訓(xùn)練數(shù)據(jù),加載入數(shù)據(jù)平臺(tái)的分布式內(nèi)存中。計(jì)算框架采用主從式結(jié)構(gòu),數(shù)據(jù)分析并行化訓(xùn)練過(guò)程中,計(jì)算節(jié)點(diǎn)和主控節(jié)點(diǎn)同步進(jìn)行。
在三層感知機(jī)的前向階段,輸入層將數(shù)據(jù)傳輸?shù)诫[層中的每個(gè)神經(jīng)元,神經(jīng)元對(duì)輸入信號(hào)進(jìn)行處理:
(1)
(2)
其中,θ表示偏置,uj表示輸入的數(shù)據(jù),Wij表示神經(jīng)元之間的權(quán)重,θj表示偏置,hf表示經(jīng)過(guò)神經(jīng)元輸出的數(shù)據(jù)。輸出層接收的信號(hào)也需要進(jìn)行處理:
(3)
(4)
其中,γ表示連接層之間的權(quán)重,Vik表示隱藏層和輸出層神經(jīng)元之間的權(quán)重,Vik表示數(shù)據(jù)的偏置。如果最終輸出的數(shù)據(jù)和實(shí)際數(shù)據(jù)一致,下一個(gè)輸入的數(shù)據(jù)的向量輸入到神經(jīng)網(wǎng)絡(luò)開始新的前向過(guò)程;如果最終輸出的數(shù)據(jù)與真實(shí)信息之間存在偏差,算法進(jìn)入后向過(guò)程,計(jì)算輸出層偏差dk,可表示為
dk=(yk-c)ck(1-ck),k=1,2,…,n
(5)
式中,yk表示理論值,ck表示實(shí)際值。
隱藏層神經(jīng)元之間的偏差ej為
(6)
式中,hj表示隱含層中的數(shù)據(jù)信息。
通過(guò)偏置后向傳播,更新輸出層與隱藏層之間的權(quán)重:
Vjk(N+1)=Vjk(N)+α1dk(N)hj
γk(N+1)=γk(N)+α1dk(N)
(7)
式中,V(N+1)和γ(N+1)表示輸出層與隱藏層之間的權(quán)重之間的關(guān)系。
更新隱藏層和輸出層之間的權(quán)重:
Wij(N+1)=Wij(N)+α2ej(N)
θj(N+1)=θj(N)+α2ej(N)
(8)
式中,α表示學(xué)習(xí)率,N表示數(shù)據(jù)訓(xùn)練的次數(shù)。對(duì)數(shù)據(jù)庫(kù)中非線性結(jié)構(gòu)的數(shù)據(jù)集來(lái)說(shuō),每次數(shù)據(jù)訓(xùn)練采用一批數(shù)據(jù)樣本,每個(gè)數(shù)據(jù)樣本產(chǎn)生ΔW數(shù)據(jù)的偏差,累加后的ΔW用于修正數(shù)據(jù)權(quán)重。
在數(shù)據(jù)并行化算法中,訓(xùn)練的數(shù)據(jù)被分為多個(gè)數(shù)據(jù)子集分給不同的計(jì)算節(jié)點(diǎn)進(jìn)行處理完成數(shù)據(jù)的訓(xùn)練,適用于多核或眾核數(shù)據(jù)平臺(tái)的計(jì)算模塊。數(shù)據(jù)分析并行化處理減少了大量訓(xùn)練數(shù)據(jù)網(wǎng)絡(luò)的開銷,減少了處理多維度數(shù)據(jù)的時(shí)間,降低了數(shù)據(jù)分析產(chǎn)生的誤差。
為驗(yàn)證本研究數(shù)據(jù)中臺(tái)架構(gòu)的數(shù)據(jù)平臺(tái)的性能,分別使用文獻(xiàn)[3]數(shù)據(jù)平臺(tái)、文獻(xiàn)[4]數(shù)據(jù)平臺(tái)和本研究數(shù)據(jù)平臺(tái)對(duì)數(shù)據(jù)進(jìn)行處理分析,比較分析各數(shù)據(jù)平臺(tái)對(duì)大量級(jí)數(shù)據(jù)的處理時(shí)間。表3為本研究數(shù)據(jù)平臺(tái)的運(yùn)行環(huán)境。
在表3運(yùn)行的環(huán)境中,經(jīng)過(guò)2個(gè)小時(shí)的試驗(yàn),從本樣本數(shù)據(jù)庫(kù)中獲取不同格式的數(shù)據(jù)量,如表4所示。
表3 運(yùn)行環(huán)境
表4 實(shí)驗(yàn)數(shù)據(jù)
以整個(gè)數(shù)據(jù)平臺(tái)的業(yè)務(wù)流轉(zhuǎn)為根據(jù),通過(guò)測(cè)試數(shù)據(jù),驗(yàn)證整個(gè)數(shù)據(jù)流程能否正常通過(guò),各模塊功能是否達(dá)到預(yù)期效果。測(cè)試結(jié)果如表5所示。
表5 測(cè)試結(jié)果
測(cè)試結(jié)果顯示,中臺(tái)架構(gòu)的數(shù)據(jù)平臺(tái)業(yè)務(wù)流程完整,生產(chǎn)的數(shù)據(jù)準(zhǔn)確沒有誤差,系統(tǒng)實(shí)現(xiàn)的功能與設(shè)計(jì)相符合,數(shù)據(jù)處理和流轉(zhuǎn)效率提高。
本研究測(cè)試環(huán)境為4臺(tái)AWS EC2服務(wù)器,基于主數(shù)據(jù)平臺(tái)的數(shù)據(jù)信號(hào)分布式采集,3種數(shù)據(jù)平臺(tái)對(duì)實(shí)驗(yàn)數(shù)據(jù)進(jìn)行處理的時(shí)間如圖4所示。
圖4 實(shí)驗(yàn)結(jié)果
從圖4可以看出,本研究中臺(tái)架構(gòu)的數(shù)據(jù)平臺(tái)對(duì)大量級(jí)的實(shí)驗(yàn)數(shù)據(jù)處理速度最快,并將處理過(guò)的數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。隨著數(shù)據(jù)量的增多,分析處理的時(shí)間增長(zhǎng)趨勢(shì)呈非線性,當(dāng)數(shù)據(jù)量達(dá)到10萬(wàn)時(shí),所用時(shí)間還不到3 600 s;達(dá)到20萬(wàn)時(shí),所用的時(shí)間在7 200 s左右;數(shù)據(jù)量在30萬(wàn)時(shí),所用的時(shí)間在14 000 s左右。其中處理圖像數(shù)據(jù)使用時(shí)間遠(yuǎn)大于數(shù)字?jǐn)?shù)據(jù)。使用并行化的方式將數(shù)據(jù)分層處理,加快了數(shù)據(jù)采集和處理的效率。
文獻(xiàn)[3]數(shù)據(jù)平臺(tái)對(duì)數(shù)據(jù)進(jìn)行處理使用的時(shí)間最多,5萬(wàn)的數(shù)據(jù)量耗時(shí)7 200 s,數(shù)據(jù)量達(dá)到30萬(wàn)使用時(shí)間高達(dá)200 000 s左右。數(shù)據(jù)量在0~20萬(wàn)范圍內(nèi)所使用時(shí)間增長(zhǎng)的幅度最大,隨后增長(zhǎng)率逐漸減小。文獻(xiàn)[4]數(shù)據(jù)平臺(tái)處理15萬(wàn)以下的數(shù)據(jù)量效率較高,數(shù)量量增加到15萬(wàn)以上時(shí)所使用的時(shí)間越來(lái)越多,數(shù)據(jù)量在30萬(wàn)時(shí)所用的時(shí)間超過(guò)了文獻(xiàn)[3]達(dá)到210 000 s左右。文獻(xiàn)[3]和文獻(xiàn)[4]在面對(duì)數(shù)據(jù)量級(jí)較大的多維度數(shù)據(jù)時(shí),處理數(shù)據(jù)的效率降低,運(yùn)算速度過(guò)慢花費(fèi)時(shí)間過(guò)長(zhǎng)。出現(xiàn)同類數(shù)據(jù)重復(fù)處理的現(xiàn)象,增加了處理時(shí)間。
本研究對(duì)數(shù)據(jù)中臺(tái)架構(gòu)進(jìn)行了分析,說(shuō)明了層級(jí)結(jié)構(gòu)和數(shù)據(jù)業(yè)務(wù)中間的關(guān)系,實(shí)現(xiàn)了數(shù)據(jù)的水平解耦,并獨(dú)立出公共數(shù)據(jù)出口,通過(guò)數(shù)據(jù)模塊整個(gè)各業(yè)務(wù)場(chǎng)景的數(shù)據(jù)。面對(duì)復(fù)雜多變的業(yè)務(wù)需求,可構(gòu)件多個(gè)中間數(shù)據(jù)結(jié)構(gòu),二次調(diào)用減少了數(shù)據(jù)冗余,提高了數(shù)據(jù)采集和分析處理的效率。
本文研究還存在一些不足之處,有待改進(jìn),數(shù)據(jù)平臺(tái)的中臺(tái)開放性和安全之間還需優(yōu)化,數(shù)據(jù)量級(jí)的提升給現(xiàn)有系統(tǒng)帶來(lái)的隱患還需進(jìn)一步考慮。