李 蘇
(中國人民銀行衡陽市中心支行科技科,湖南 衡陽 421001)
人民銀行現代化支付系統已經發展到第二代,是銀行資金匯劃與資金清算的重要平臺和核心樞紐,在國家經濟發展中承擔著重要作用、處于重要地位[1]。據統計,某省會中支清算中心2016年業務筆數達21380萬筆,年均數據量超2億條。支付清算數據體現著金融經濟的運行情況,關系著宏觀經濟的發展狀況,對其進行分析利用可以為總結和預測金融經濟發展提供一定參考。其分析側重點在于資金的流量流向分析、CCPC業務量分析、重點監測單位業務分析、區域業務分析、銀行業務分析、行業業務分析等。
自支付系統上線運行迄今已超過 10年時間,面對年均2億條的數據規模,積累數據將超過20億條,采用傳統關系型數據庫將面臨壓力[2-5]。通過大數據分析平臺,可以有效緩解該數據存儲壓力、匯總統計運算壓力。支付清算數據是典型的結構化數據,關鍵字段包括交易序號、業務日期、業務類型、賬號、名稱、交易金額、歸屬區域、歸屬銀行、歸屬行業等。在進行數據清洗后,以業務關鍵字作為key值、以相關屬性作為列族,存儲到列式數據庫如 HBase[6]中;再通過建立區域、銀行、行業維度,保存數據到事實表中,形成維度立方體,在前臺即可進行各種維度分析、展示各種報表。大數據平臺為此提供了完整的數據處理鏈條,工具化的展示模塊,使得對數據的理解不再停留在過去以尋找數據發生原因為主的思路上,而是展示了數據發展的趨勢、找出數據相關性,以歷史數據去預測未來數據的走向。
本人參與的人民銀行某省級數據中心大數據開發項目,利用開源的 hadoop、hdfs、hive、hbase、kylin、kettle等技術或工具搭建了一個分布式大數據分析平臺,實現了海量支付清算數據的分析和統計。
分布式大數據從萌芽開始到現在的蓬勃發展,涌現了許多的技術體系和技術框架。其中應用最為廣泛的當屬源于Google公司的Hadoop[7-9]分布式系統基礎架構。本文中的分布式大數據平臺,是以Hadoop架構為基礎,選用其中部分組件進行搭建。

圖1 基于HDFS的平臺物理架構Fig.1 Physical architecture based on HDFS
構成該平臺的 HDFS集群[10]的主要有兩類節點,并以主從(Master/Slave)模式,或者說是管理者-工作組模式運行,即一個NameNode(管理者)和多個DataNode(工作者)。SecondaryNameNode是NameNode的鏡像數據備份。對應到HDFS分布式文件系統,NameNode是主服務器,管理文件系統的命名空間和客戶端對文件系統的訪問操作;DataNode負責管理存儲的數據。同時,Master主節點負責調度構成一個作業的所有任務,這些任務分布在不同的 Slave從節點上。Master主節點監控它們的執行情況,并且重新執行之前的失敗任務;Slave從節點僅負責由主節點指派的任務。另外,主節點要在可靠性和性能上優于從節點,并且要保證NameNode和SecondaryNameNode節點在配置和環境上要一致,方便在 NameNode不可用的情況下,可以以最快的速度替換。由于 Hadoop的作業基本上都是數據密集型,在進行作業時,有大量的中間結果需要通過交換機進行傳輸,為了不讓帶寬成為瓶頸,建議使用萬兆交換機。
平臺操作系統為Linux CenteOS 7.3.1611版本,Hadoop版本為CDH5.10,JDK版本1.8,YARN版本 2.8.0,Hive版本2.1.1,HBase版本 1.2.5。從業務系統導出的 XML半結構化的海量支付清算數據經過簡單的清洗都存儲到HDFS中。
Apache Hadoop Yarn是一種Hadoop集群環境的通用資源管理系統,通過它可以為上層應用提供統一的資源管理和調度,提高集群的資源利用率和數據共享能力。
HBase是一個高可靠性、面向列、可伸縮的分布式數據存儲系統,與傳統的基于行的關系型數據不同,它是基于列存儲的。HBase利用 Hadoop HDFS作為其文件存儲系統,Hadoop MapReduce[11]為HBase處理海量數據提供高性能的計算能力。
Hive[12-14]被認為是 MapReduce2.0,它將用戶從編寫繁瑣的map和reduce函數中解脫出來,采用類似 SQL語句方式進行數據運算,極大提高了應用部署效率。Hive可以將結構化文本文件映射到它自身的表結構中,然后將用戶提交的QL查詢語句自動轉化為 MapReduce過程進行運算處理,返回結果。

圖2 平臺軟件架構Fig.2 The software architecture of platform
在完成大數據平臺環境搭建后,針對具體的應用場景,我們設計了這樣的處理流程:

圖3 數據處理流程Fig.3 Data processing flow
① 來自各個渠道的大數據源,通過定時任務,以批量傳遞的方式,主動推送、被動采集到 Hadoop平臺中,在HDFS分布式文件系統中進行保存。
② 通過 MapReduce/Hive對原始數據進行提取、分析、清洗,完成ETL過程,形成結構化的數據,以鍵值對的形式,保存到HBase列數據庫中。
③ 對數據分析目標進行分析、建模,在MySQL中建立立方體結構,建立事實表、維度表;從HBase中讀取鍵值對數據,抽取、運算得到立方體的數據并插入到MySQL立方體中。
④ 建立 Web應用,調用 HBase進行明細數據查詢;調用Kylin立方體展示接口,對MySQL立方體數據進行展示,可供自定義行列、鉆取、追溯;調用潤乾等報表工具,建立常規固定格式報表。
央行范一飛副行長在 2017年科技工作會議上指出,要“加強分布式架構轉型研究與規劃,構建以大數據為支撐的央行決策平臺”[15]。目前,人民銀行已經建成、運行了多個重要業務系統,基本實現了中央銀行業務的全覆蓋,但各個的業務系統之間的數據并未實現互聯互通,數據利用水平較低,同時,傳統的關系型數據庫無法處理海量數據的存儲和快速查詢。因此,以云計算、大數據、分布式技術為基礎,建立中央銀行的大數據標準體系和金融大數據分析平臺勢在必行。本人參與開發的支付清算大數據分析平臺是大數據技術在人民銀行業務上應用的初步探索,通過對新技術架構的運用、與業務數據的結合,力爭形成和打造出規模適中、應用廣泛、架構靈活的分布式大數據平臺,對金融系統開展大數據平臺建設有一定借鑒意義。
[1] 高晴. 淺析人民銀行支付系統在全國支付系統中的地位[J].時代金融, 2017(35): 137+142.
[2] 2016年支付體系運行總體情況[J].金融會計, 2017(03):23-26.
[3] 宋現鋒. 基于Linux的高可用性集群管理系統的設計與實現[D].西安電子科技大學, 2012.
[4] 周彩冬,潘維民.大數據在商業銀行反洗錢的應用[J]. 軟件,2016, 37(2): 1-7.
[5] 王琪, 鄂海紅, 宋美娜, 黃叒. 論大數據技術對保險行業的影響[J]. 軟件, 2017, 38(5): 7-11.
[6] 馮曉普. HBase存儲的研究與應用[D]. 北京郵電大學,2014.
[7] 馬凱航, 高永明, 吳止鍰, 李磊.大數據時代數據管理技術研究綜述[J]. 軟件, 2015, 36(10): 46-49+56.
[8] 張丹. HDFS中文件存儲優化的相關技術研究[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的分布式存儲的研究與優化[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日志分析的大數據存儲優化方法[J]. 軟件, 2014, 35(11): 94-100.
[13] 江三鋒, 王元亮. 基于Hive的海量web日志分析系統設計研究[J]. 軟件, 2015, 36(4): 93-96.
[14] 陳慧, 龔婷雨. 大數據分析與Apache-Kylin應用[J].江西通信科技, 2016(4): 26-29.
[15] 張瑞懷. 構建以大數據為支撐的央行決策平臺[J]. 金融電子化, 2017(5): 42-44.