王沛然,馬小寧,王 喆,鄒 丹,劉 敏
(中國鐵道科學(xué)研究院集團有限公司 鐵路大數(shù)據(jù)研究與應(yīng)用創(chuàng)新中心,北京 100081)
隨著中國高速鐵路的飛速發(fā)展和鐵路信息化建設(shè)逐步完善,中國鐵路積累了大量與鐵路相關(guān)的結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化數(shù)據(jù)[1]。對這些數(shù)據(jù)進行全面有效管理和深入分析挖掘,充分發(fā)揮數(shù)據(jù)的價值,對提高鐵路運輸生產(chǎn)效率、降低運輸成本、提升客貨運產(chǎn)品服務(wù)質(zhì)量、提高運營管理水平等具有重要意義[2]。
鐵路數(shù)據(jù)服務(wù)平臺是大數(shù)據(jù)應(yīng)用的基礎(chǔ)和技術(shù)支撐,為大數(shù)據(jù)應(yīng)用提供數(shù)據(jù)基礎(chǔ)、存儲、計算和分析等能力。鐵路數(shù)據(jù)服務(wù)平臺提供結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)的接入能力,同時支持PB級離線數(shù)據(jù)的分析;在實時數(shù)據(jù)分析端,支持TB級數(shù)據(jù)的實時分析[3]。
存儲作為大數(shù)據(jù)平臺的重要組成部分,只有在合理而高效的大數(shù)據(jù)存儲架構(gòu)支撐下,才能對鐵路行業(yè)的大數(shù)據(jù)進行快速存取、檢索并提高整個系統(tǒng)的吞吐量,大數(shù)據(jù)及數(shù)據(jù)挖掘應(yīng)用才可以開拓其核心價值。目前,Hadoop已成為大數(shù)據(jù)處理的標(biāo)準(zhǔn),Hadoop處理數(shù)據(jù)的生態(tài)日漸豐富,它能夠滿足大數(shù)據(jù)的多種需求[4]。僅運用Hadoop作為數(shù)據(jù)存儲組件,將海量鐵路數(shù)據(jù)存入“數(shù)據(jù)湖”中,無法對這些數(shù)據(jù)進行管理監(jiān)控,很容易形成“數(shù)據(jù)沼澤”[5],所以集合多種存儲方式的存儲架構(gòu)才能適應(yīng)當(dāng)前數(shù)據(jù)存儲的發(fā)展要求。如何將數(shù)據(jù)安全穩(wěn)定的存儲,如何對數(shù)據(jù)在存儲過程中進行全鏈路監(jiān)控管理,如何跨存儲組件無感共享,都是數(shù)據(jù)儲存架構(gòu)需要考慮的問題。本文將結(jié)合鐵路數(shù)據(jù)服務(wù)平臺的實際應(yīng)用,通過研究各個存儲組件的使用場景及利弊,探索使用何種存儲方式使得各種數(shù)據(jù)安全穩(wěn)定的存儲,從存儲組件分區(qū)管理,全鏈路存儲組件監(jiān)控模塊,無感存儲組件訪問中間件模塊3個部分對鐵路數(shù)據(jù)服務(wù)平臺存儲架構(gòu)進行全面闡述。
對海量多源異構(gòu)數(shù)據(jù)進行高效處理是大數(shù)據(jù)平臺核心能力之一[6]。由于計算需求的多樣性,數(shù)據(jù)特征及計算性能要求差異性較大,鐵路數(shù)據(jù)服務(wù)平臺整合多種存儲計算技術(shù)以滿足需要。當(dāng)前鐵路數(shù)據(jù)服平臺集成了PostgreSQL、Hive、Hbase、Green plum、Elasticsearch、Redis和Ceph等存儲組件,不同業(yè)務(wù)、不同場景的數(shù)據(jù)采用不同的方式進行計算與存儲。采用多種存儲方式并存的形式,根據(jù)數(shù)據(jù)類型及數(shù)據(jù)處理的要求選擇不同的數(shù)據(jù)存儲方式。存儲架構(gòu)還包括全鏈路存儲監(jiān)控組件對平臺存儲組件進行監(jiān)控,無感存儲組件訪問中間件模塊提供數(shù)據(jù)訪問服務(wù)。
鐵路數(shù)據(jù)服務(wù)平臺的存儲架構(gòu),如圖1所示。
圖1 鐵路數(shù)據(jù)服務(wù)平臺存儲架構(gòu)
鐵路數(shù)據(jù)服務(wù)平臺要為鐵路各類應(yīng)用海量數(shù)據(jù)存儲提供基礎(chǔ)性支撐功能。根據(jù)不同業(yè)務(wù)不同場景的數(shù)據(jù),提供多種數(shù)據(jù)存儲,支持結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)等存儲需求[7]。結(jié)合數(shù)據(jù)使用頻度,業(yè)務(wù)使用場景,存儲組件優(yōu)缺點等方面,對數(shù)據(jù)進行分區(qū)存儲。利用大數(shù)據(jù)的批量計算、內(nèi)存計算等技術(shù),結(jié)合各類業(yè)務(wù)邏輯和算法,實現(xiàn)海量數(shù)據(jù)的離線分析與處理功能[8]。
結(jié)構(gòu)化數(shù)據(jù)通常采用傳統(tǒng)數(shù)據(jù)倉庫中關(guān)系型數(shù)據(jù)庫存儲,從數(shù)據(jù)處理維度看,對于業(yè)務(wù)處理層,鑒于其對事務(wù)完整性和高實時性的要求,可采用傳統(tǒng)的高性能關(guān)系型數(shù)據(jù)庫PostgreSQL作為數(shù)據(jù)服務(wù)平臺的貼源層接收結(jié)構(gòu)化數(shù)據(jù)。通過使用PostgreSQL作為貼源層,使得存儲架構(gòu)更加穩(wěn)定。
針對不同的業(yè)務(wù)場景,數(shù)據(jù)也可按實際情況直接接入其它存儲組件,鐵路數(shù)據(jù)服務(wù)平臺具備直接接入ES、Redis、Greenplum和Hbase等存儲組件的能力,可結(jié)合業(yè)務(wù)場景將這些數(shù)據(jù)及時共享出去。
鐵路數(shù)據(jù)服務(wù)平臺根據(jù)數(shù)據(jù)的訪問頻次將數(shù)據(jù)分為冷、熱數(shù)據(jù)存儲區(qū)。熱數(shù)據(jù)存儲區(qū)主要存放近期使用頻次較高的數(shù)據(jù),冷數(shù)據(jù)存儲區(qū)主要存放訪問頻次較低的歷史數(shù)據(jù)。平臺既支持?jǐn)?shù)據(jù)在各自分區(qū)內(nèi)根據(jù)業(yè)務(wù)場景進行數(shù)據(jù)遷移,也支持?jǐn)?shù)據(jù)在冷熱分區(qū)間跨區(qū)遷移查詢。
由于某些業(yè)務(wù)場景的需要,平臺同樣適配數(shù)據(jù)直接接入Hadoop數(shù)據(jù)倉庫。
半結(jié)構(gòu)化數(shù)據(jù)是結(jié)構(gòu)化數(shù)據(jù)的一種形式,常見的半結(jié)構(gòu)化數(shù)據(jù)有XML和JSON[9]。半結(jié)構(gòu)化數(shù)據(jù)一般是結(jié)構(gòu)化的數(shù)據(jù),但它的結(jié)構(gòu)變化較為突出。所以鐵路數(shù)據(jù)服務(wù)平臺通常將半結(jié)構(gòu)化數(shù)據(jù)直接存儲在Hadoop數(shù)據(jù)倉庫中,利用Hadoop強大的文件處理能力靈活處理,發(fā)揮半結(jié)構(gòu)化數(shù)據(jù)的特點,高效地對XML、JSON等日志文件等半結(jié)構(gòu)化數(shù)據(jù)進行分析計算。
非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒有預(yù)定義的數(shù)據(jù)模型,不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù)[10]。鐵路數(shù)據(jù)服務(wù)平臺采用對象存儲Ceph來存儲非結(jié)構(gòu)化數(shù)據(jù)。對象存儲Ceph克服了讀寫速度慢、存儲空間不足等的劣勢,在海量存儲圖片、音視頻、日志等文件的存儲與內(nèi)容分發(fā)網(wǎng)絡(luò)和云端數(shù)據(jù)處理等方面展現(xiàn)出優(yōu)勢。數(shù)據(jù)服務(wù)平臺通過使用對象存儲Ceph,使其具有較強的橫向拓展、動態(tài)伸縮、冗余容災(zāi)、負載平衡的能力,并通過相關(guān)技術(shù)實現(xiàn)了對接Hadoop生態(tài)搭建的大數(shù)據(jù)存儲實現(xiàn)數(shù)據(jù)的無縫流轉(zhuǎn),為大數(shù)據(jù)分析共享提供了良好的數(shù)據(jù)銜接。用戶可以通過頁面上傳或者接口上傳非結(jié)構(gòu)化數(shù)據(jù)。
在大數(shù)據(jù)應(yīng)用場景中,結(jié)合業(yè)務(wù)場景,運用多種存儲組件的現(xiàn)象已經(jīng)較為普遍,如果不能梳理清楚存儲組件間數(shù)據(jù)流轉(zhuǎn)過程,將會使數(shù)據(jù)服務(wù)平臺數(shù)據(jù)雜亂無章,因此,建立全鏈路存儲組件監(jiān)控能夠使得這一問題得到解決。
鐵路數(shù)據(jù)服務(wù)平臺全鏈路存儲組件監(jiān)控模塊實現(xiàn)數(shù)據(jù)在平臺內(nèi)各存儲組件間數(shù)據(jù)流轉(zhuǎn)的監(jiān)控及管理。監(jiān)控模塊可以對各個組件內(nèi)的元數(shù)據(jù)自動化采集、探查、幫助繪制數(shù)據(jù)地圖,標(biāo)明數(shù)據(jù)關(guān)系,分析各存儲組件內(nèi)數(shù)據(jù)關(guān)系,管理模型變更。通過元數(shù)據(jù)管理,方便業(yè)務(wù)人員和技術(shù)人員快速定位數(shù)據(jù)來源,滿足內(nèi)部管理、審計或外部監(jiān)管的需求,追溯業(yè)務(wù)指標(biāo)、報表的數(shù)據(jù)來源和加工過程。
全鏈路存儲組件監(jiān)控模塊提供跨工具和應(yīng)用的企業(yè)級元數(shù)據(jù)統(tǒng)一視圖,給出了盤點數(shù)據(jù)資源現(xiàn)狀和分析跟蹤數(shù)據(jù)流轉(zhuǎn)的實際可行的解決方案。內(nèi)置多種采集適配器,包括Oracle、Mysql、PostgreSQL、Hive和Hbase等,可快速對接各類元數(shù)據(jù),建立統(tǒng)一、集中的元數(shù)據(jù)資源庫,實現(xiàn)企業(yè)級元數(shù)據(jù)管理。
(1)數(shù)據(jù)地圖模塊。提供跨工具和應(yīng)用了解企業(yè)內(nèi)系統(tǒng)以及系統(tǒng)之間數(shù)據(jù)流向關(guān)系,并支持從系統(tǒng)到數(shù)據(jù)庫的鉆取及相關(guān)表、字段信息的展示。
(2)全鏈分析模塊。提供跨工具了解數(shù)據(jù)在系統(tǒng)中流動變化的全鏈分析,包括數(shù)據(jù)的上游鏈路來源情況和該數(shù)據(jù)影響的下游鏈路關(guān)聯(lián)情況。
(3)血統(tǒng)分析模塊。提供跨工具了解數(shù)據(jù)在系統(tǒng)中流動變化的。
(4)影響分析模塊。提供跨工具追蹤企業(yè)范圍的數(shù)據(jù)變化影響;表關(guān)聯(lián)程度分析,用于展現(xiàn)表在系統(tǒng)中的系統(tǒng)程度。
在一些實際業(yè)務(wù)場景中,包括存儲結(jié)構(gòu)化數(shù)據(jù)的PostgreSQL、GP、Hbase等,也包括存儲非結(jié)構(gòu)化數(shù)據(jù)的對象存儲組件,每個組件對于數(shù)據(jù)讀取方式不同、存儲和讀取的效率也存在很大差異,導(dǎo)致在進行數(shù)據(jù)訪問時,不但需要了解數(shù)據(jù)存在哪個組件中,編寫對應(yīng)語法的查詢語句,還需要考慮數(shù)據(jù)查詢的實時性。為解決這一問題,鐵路數(shù)據(jù)服務(wù)平臺存儲架構(gòu)設(shè)計了無感存儲組件訪問中間件。
無感存儲組件訪問中間件,提供跨存儲組件對數(shù)據(jù)進行查詢并提供查詢結(jié)果的能力,上層通過標(biāo)準(zhǔn)SQL進行封裝并建立數(shù)據(jù)反射將批量處理的數(shù)據(jù)預(yù)先處理后存儲到內(nèi)存數(shù)據(jù)庫中進行緩存,實現(xiàn)對大部分存儲組件的調(diào)用,1 000萬條數(shù)據(jù)查詢時間為0.15 s,實現(xiàn)對存儲組件的無感訪問。無感存儲訪問組件原理,如圖2所示。
圖2 無感存儲訪問組件原理
(1)跨數(shù)據(jù)環(huán)境的統(tǒng)一架構(gòu),支持多種數(shù)據(jù)源接入即用。
(2)數(shù)據(jù)虛擬化,用真實的數(shù)據(jù),提供虛擬化視圖。
(3)各類業(yè)務(wù)使用最合適的技術(shù)在原來的位置上獨立處理數(shù)據(jù),無論外部還是內(nèi)部數(shù)據(jù)源。
(4)通用的統(tǒng)一訪問接口,全量的數(shù)據(jù)檢索。
(5)不搬移數(shù)據(jù),處理鏈路短,支持實時業(yè)務(wù)響應(yīng)。
鐵路數(shù)據(jù)服務(wù)平臺也支持直接連接存儲組件的查詢接口服務(wù)。提供多種方式的數(shù)據(jù)共享。
某鐵路局集團公司安全大數(shù)據(jù)基于結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)融合分析場景的實際應(yīng)用,數(shù)據(jù)傳輸流程如圖3所示。由于中國國家鐵路集團有限公司(簡稱:國鐵集團)安監(jiān)局和鐵路局集團公司安監(jiān)室每日交班分析會對當(dāng)日發(fā)生的事故進行匯總,而這些事故當(dāng)前只有事故概況情況,尚無調(diào)查處理信息,從而無法對事故原因進行科學(xué)分析。
圖3 結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)融合分析數(shù)據(jù)傳輸流程
該應(yīng)用運用大數(shù)據(jù)分析技術(shù),通過對結(jié)構(gòu)化的事故概況信息數(shù)據(jù)進行智能匹配,精準(zhǔn)挖掘歷史同類事故案例,為事故調(diào)查處理提供輔助參考。利用文本分析技術(shù),對非結(jié)構(gòu)化數(shù)據(jù)歷史事故的調(diào)查報告進行格式化處理,對同類事故的原因進行挖掘分析,結(jié)合結(jié)構(gòu)化的事故概況信息和非結(jié)構(gòu)化的事故調(diào)查報告綜合分析,從而精準(zhǔn)地指導(dǎo)事故原因分析。
基于結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)融合分析場景,該場景下的數(shù)據(jù)鏈路圖,如圖4所示。
(1)該存儲架構(gòu)將結(jié)構(gòu)化數(shù)據(jù)通過接口方式抽取到前置機PostgreSQL數(shù)據(jù)庫中,并在PostgreSQL數(shù)據(jù)庫中對數(shù)據(jù)進行清洗加工,將完整可用的數(shù)據(jù)通過Python腳本抽取到Hive庫中,這樣可以將清洗后的歷史數(shù)據(jù)全部存入冷數(shù)據(jù)區(qū)中。
(2)對象存儲Ceph將非結(jié)構(gòu)化數(shù)據(jù)抽取存儲,AI平臺通過存儲訪問中間件,借助中間件調(diào)度工具,根據(jù)日期和實際業(yè)務(wù)邏輯,實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)增量訪問,從而保證數(shù)據(jù)的完整性。
(3)通過存儲訪問中間件從對象存儲Ceph中對非結(jié)構(gòu)化數(shù)據(jù)進行數(shù)據(jù)訪問,結(jié)合結(jié)構(gòu)化數(shù)據(jù)挖掘同類事故的原因。
(4)將分析結(jié)果數(shù)據(jù)同步到安全大數(shù)據(jù)平臺的Oracle數(shù)據(jù)庫中。
圖4 某鐵路局集團公司結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)融合分析數(shù)據(jù)鏈路
該場景鐵路數(shù)據(jù)服務(wù)平臺的存儲組件分區(qū)管理,為安全大數(shù)據(jù)應(yīng)用提供了多種存儲方式,并將數(shù)據(jù)安全、可靠存儲在各存儲組件中;存儲組件監(jiān)控模塊,實時監(jiān)控各存儲組件中的數(shù)據(jù)流轉(zhuǎn)過程;無感存儲組件訪問中間件,為AI平臺提供了跨結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)訪問,從而提升安全大數(shù)據(jù)平臺的分析能力。
鐵路數(shù)據(jù)服務(wù)平臺存儲架構(gòu),通過豐富的存儲組件滿足各種存儲需求,建立數(shù)據(jù)存儲的冷熱分區(qū),保障數(shù)據(jù)安全可靠存儲。該存儲架構(gòu)還設(shè)計了全鏈路數(shù)據(jù)存儲監(jiān)控組件和無感存儲組件訪問中間件,全鏈路數(shù)據(jù)存儲監(jiān)控組件,實時追蹤數(shù)據(jù)在各存儲組件間流轉(zhuǎn)過程,從而達到對存儲組件的監(jiān)控管理;無感存儲組件訪問中間件,解決了不同組件,不同版本數(shù)據(jù)訪問差異化的問題,為數(shù)據(jù)訪問提供便捷服務(wù)。該存儲架構(gòu)的優(yōu)勢在某鐵路局集團公司關(guān)于結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)融合的安全大數(shù)據(jù)應(yīng)用上得到充分展現(xiàn)。
當(dāng)前,數(shù)據(jù)服務(wù)平臺存儲架構(gòu)在數(shù)據(jù)存儲安全管理方面仍有待改進,隨著個人信息保護面臨新威脅與新風(fēng)險,在數(shù)據(jù)存儲安全管理方面,應(yīng)從存儲架構(gòu)層面設(shè)計相應(yīng)的模塊,對其進行管控,從而提高鐵路數(shù)據(jù)服務(wù)平臺的存儲安全管理能力。