李 蘇
(中國人民銀行衡陽市中心支行科技科,湖南 衡陽 421001)
人民銀行現(xiàn)代化支付系統(tǒng)已經(jīng)發(fā)展到第二代,是銀行資金匯劃與資金清算的重要平臺和核心樞紐,在國家經(jīng)濟發(fā)展中承擔著重要作用、處于重要地位[1]。據(jù)統(tǒng)計,某省會中支清算中心2016年業(yè)務筆數(shù)達21380萬筆,年均數(shù)據(jù)量超2億條。支付清算數(shù)據(jù)體現(xiàn)著金融經(jīng)濟的運行情況,關系著宏觀經(jīng)濟的發(fā)展狀況,對其進行分析利用可以為總結(jié)和預測金融經(jīng)濟發(fā)展提供一定參考。其分析側(cè)重點在于資金的流量流向分析、CCPC業(yè)務量分析、重點監(jiān)測單位業(yè)務分析、區(qū)域業(yè)務分析、銀行業(yè)務分析、行業(yè)業(yè)務分析等。
自支付系統(tǒng)上線運行迄今已超過 10年時間,面對年均2億條的數(shù)據(jù)規(guī)模,積累數(shù)據(jù)將超過20億條,采用傳統(tǒng)關系型數(shù)據(jù)庫將面臨壓力[2-5]。通過大數(shù)據(jù)分析平臺,可以有效緩解該數(shù)據(jù)存儲壓力、匯總統(tǒng)計運算壓力。支付清算數(shù)據(jù)是典型的結(jié)構(gòu)化數(shù)據(jù),關鍵字段包括交易序號、業(yè)務日期、業(yè)務類型、賬號、名稱、交易金額、歸屬區(qū)域、歸屬銀行、歸屬行業(yè)等。在進行數(shù)據(jù)清洗后,以業(yè)務關鍵字作為key值、以相關屬性作為列族,存儲到列式數(shù)據(jù)庫如 HBase[6]中;再通過建立區(qū)域、銀行、行業(yè)維度,保存數(shù)據(jù)到事實表中,形成維度立方體,在前臺即可進行各種維度分析、展示各種報表。大數(shù)據(jù)平臺為此提供了完整的數(shù)據(jù)處理鏈條,工具化的展示模塊,使得對數(shù)據(jù)的理解不再停留在過去以尋找數(shù)據(jù)發(fā)生原因為主的思路上,而是展示了數(shù)據(jù)發(fā)展的趨勢、找出數(shù)據(jù)相關性,以歷史數(shù)據(jù)去預測未來數(shù)據(jù)的走向。
本人參與的人民銀行某省級數(shù)據(jù)中心大數(shù)據(jù)開發(fā)項目,利用開源的 hadoop、hdfs、hive、hbase、kylin、kettle等技術或工具搭建了一個分布式大數(shù)據(jù)分析平臺,實現(xiàn)了海量支付清算數(shù)據(jù)的分析和統(tǒng)計。
分布式大數(shù)據(jù)從萌芽開始到現(xiàn)在的蓬勃發(fā)展,涌現(xiàn)了許多的技術體系和技術框架。其中應用最為廣泛的當屬源于Google公司的Hadoop[7-9]分布式系統(tǒng)基礎架構(gòu)。本文中的分布式大數(shù)據(jù)平臺,是以Hadoop架構(gòu)為基礎,選用其中部分組件進行搭建。
圖1 基于HDFS的平臺物理架構(gòu)Fig.1 Physical architecture based on HDFS
構(gòu)成該平臺的 HDFS集群[10]的主要有兩類節(jié)點,并以主從(Master/Slave)模式,或者說是管理者-工作組模式運行,即一個NameNode(管理者)和多個DataNode(工作者)。SecondaryNameNode是NameNode的鏡像數(shù)據(jù)備份。對應到HDFS分布式文件系統(tǒng),NameNode是主服務器,管理文件系統(tǒng)的命名空間和客戶端對文件系統(tǒng)的訪問操作;DataNode負責管理存儲的數(shù)據(jù)。同時,Master主節(jié)點負責調(diào)度構(gòu)成一個作業(yè)的所有任務,這些任務分布在不同的 Slave從節(jié)點上。Master主節(jié)點監(jiān)控它們的執(zhí)行情況,并且重新執(zhí)行之前的失敗任務;Slave從節(jié)點僅負責由主節(jié)點指派的任務。另外,主節(jié)點要在可靠性和性能上優(yōu)于從節(jié)點,并且要保證NameNode和SecondaryNameNode節(jié)點在配置和環(huán)境上要一致,方便在 NameNode不可用的情況下,可以以最快的速度替換。由于 Hadoop的作業(yè)基本上都是數(shù)據(jù)密集型,在進行作業(yè)時,有大量的中間結(jié)果需要通過交換機進行傳輸,為了不讓帶寬成為瓶頸,建議使用萬兆交換機。
平臺操作系統(tǒng)為Linux CenteOS 7.3.1611版本,Hadoop版本為CDH5.10,JDK版本1.8,YARN版本 2.8.0,Hive版本2.1.1,HBase版本 1.2.5。從業(yè)務系統(tǒng)導出的 XML半結(jié)構(gòu)化的海量支付清算數(shù)據(jù)經(jīng)過簡單的清洗都存儲到HDFS中。
Apache Hadoop Yarn是一種Hadoop集群環(huán)境的通用資源管理系統(tǒng),通過它可以為上層應用提供統(tǒng)一的資源管理和調(diào)度,提高集群的資源利用率和數(shù)據(jù)共享能力。
HBase是一個高可靠性、面向列、可伸縮的分布式數(shù)據(jù)存儲系統(tǒng),與傳統(tǒng)的基于行的關系型數(shù)據(jù)不同,它是基于列存儲的。HBase利用 Hadoop HDFS作為其文件存儲系統(tǒng),Hadoop MapReduce[11]為HBase處理海量數(shù)據(jù)提供高性能的計算能力。
Hive[12-14]被認為是 MapReduce2.0,它將用戶從編寫繁瑣的map和reduce函數(shù)中解脫出來,采用類似 SQL語句方式進行數(shù)據(jù)運算,極大提高了應用部署效率。Hive可以將結(jié)構(gòu)化文本文件映射到它自身的表結(jié)構(gòu)中,然后將用戶提交的QL查詢語句自動轉(zhuǎn)化為 MapReduce過程進行運算處理,返回結(jié)果。
圖2 平臺軟件架構(gòu)Fig.2 The software architecture of platform
在完成大數(shù)據(jù)平臺環(huán)境搭建后,針對具體的應用場景,我們設計了這樣的處理流程:
圖3 數(shù)據(jù)處理流程Fig.3 Data processing flow
① 來自各個渠道的大數(shù)據(jù)源,通過定時任務,以批量傳遞的方式,主動推送、被動采集到 Hadoop平臺中,在HDFS分布式文件系統(tǒng)中進行保存。
② 通過 MapReduce/Hive對原始數(shù)據(jù)進行提取、分析、清洗,完成ETL過程,形成結(jié)構(gòu)化的數(shù)據(jù),以鍵值對的形式,保存到HBase列數(shù)據(jù)庫中。
③ 對數(shù)據(jù)分析目標進行分析、建模,在MySQL中建立立方體結(jié)構(gòu),建立事實表、維度表;從HBase中讀取鍵值對數(shù)據(jù),抽取、運算得到立方體的數(shù)據(jù)并插入到MySQL立方體中。
④ 建立 Web應用,調(diào)用 HBase進行明細數(shù)據(jù)查詢;調(diào)用Kylin立方體展示接口,對MySQL立方體數(shù)據(jù)進行展示,可供自定義行列、鉆取、追溯;調(diào)用潤乾等報表工具,建立常規(guī)固定格式報表。
央行范一飛副行長在 2017年科技工作會議上指出,要“加強分布式架構(gòu)轉(zhuǎn)型研究與規(guī)劃,構(gòu)建以大數(shù)據(jù)為支撐的央行決策平臺”[15]。目前,人民銀行已經(jīng)建成、運行了多個重要業(yè)務系統(tǒng),基本實現(xiàn)了中央銀行業(yè)務的全覆蓋,但各個的業(yè)務系統(tǒng)之間的數(shù)據(jù)并未實現(xiàn)互聯(lián)互通,數(shù)據(jù)利用水平較低,同時,傳統(tǒng)的關系型數(shù)據(jù)庫無法處理海量數(shù)據(jù)的存儲和快速查詢。因此,以云計算、大數(shù)據(jù)、分布式技術為基礎,建立中央銀行的大數(shù)據(jù)標準體系和金融大數(shù)據(jù)分析平臺勢在必行。本人參與開發(fā)的支付清算大數(shù)據(jù)分析平臺是大數(shù)據(jù)技術在人民銀行業(yè)務上應用的初步探索,通過對新技術架構(gòu)的運用、與業(yè)務數(shù)據(jù)的結(jié)合,力爭形成和打造出規(guī)模適中、應用廣泛、架構(gòu)靈活的分布式大數(shù)據(jù)平臺,對金融系統(tǒng)開展大數(shù)據(jù)平臺建設有一定借鑒意義。
[1] 高晴. 淺析人民銀行支付系統(tǒng)在全國支付系統(tǒng)中的地位[J].時代金融, 2017(35): 137+142.
[2] 2016年支付體系運行總體情況[J].金融會計, 2017(03):23-26.
[3] 宋現(xiàn)鋒. 基于Linux的高可用性集群管理系統(tǒng)的設計與實現(xiàn)[D].西安電子科技大學, 2012.
[4] 周彩冬,潘維民.大數(shù)據(jù)在商業(yè)銀行反洗錢的應用[J]. 軟件,2016, 37(2): 1-7.
[5] 王琪, 鄂海紅, 宋美娜, 黃叒. 論大數(shù)據(jù)技術對保險行業(yè)的影響[J]. 軟件, 2017, 38(5): 7-11.
[6] 馮曉普. HBase存儲的研究與應用[D]. 北京郵電大學,2014.
[7] 馬凱航, 高永明, 吳止鍰, 李磊.大數(shù)據(jù)時代數(shù)據(jù)管理技術研究綜述[J]. 軟件, 2015, 36(10): 46-49+56.
[8] 張丹. HDFS中文件存儲優(yōu)化的相關技術研究[D]. 南京師范大學, 2013.
[9] Kambatla K, Pathak A, Pucha H. Towards optimizing hadoop provisioning in the cloud[C]//Proc. of the First Workshop on Hot Topics in Cloud Computing. 2009: 118.
[10] 蔣鴻斌. 基于HDFS的分布式存儲的研究與優(yōu)化[D]. 電子科技大學, 2017.
[11] Chu C T, Kim S K, Lin Y A, et al. Map-reduce for machine learning on multicore[C]//NIPS. 2006, 6: 281-288.
[12] 王正也, 李書芳. 一種基于Hive日志分析的大數(shù)據(jù)存儲優(yōu)化方法[J]. 軟件, 2014, 35(11): 94-100.
[13] 江三鋒, 王元亮. 基于Hive的海量web日志分析系統(tǒng)設計研究[J]. 軟件, 2015, 36(4): 93-96.
[14] 陳慧, 龔婷雨. 大數(shù)據(jù)分析與Apache-Kylin應用[J].江西通信科技, 2016(4): 26-29.
[15] 張瑞懷. 構(gòu)建以大數(shù)據(jù)為支撐的央行決策平臺[J]. 金融電子化, 2017(5): 42-44.