梁明煌 吳航
【摘要】 科學技術及互聯(lián)網(wǎng)的發(fā)展,推動著大數(shù)據(jù)時代的來臨。文章介紹了中國移動集團公司在移動互聯(lián)網(wǎng)支付系統(tǒng)建設中成功運用Hadoop技術的典型案例。案例采用了Hadoop云計算技術,實現(xiàn)了分布式數(shù)據(jù)和計算框架,對海量數(shù)據(jù)進行分布式并發(fā)計算,提升了系統(tǒng)并行處理能力,減少了處理等待時間,滿足了移動支付多樣化及第三方支付平臺接入的需要,系統(tǒng)健壯性也得到了極大的提高。
【關鍵詞】 中國移動 Hadoop HDFS MapReduce 移動支付 調(diào)度引擎 任務引擎Application of Hadoop technology in mobile payment industry
Liang Minghuang Wu Hang
[Abstract] With the development of science and technology and the Internet, the advent of the era of big data. This article introduces the typical cases of the successful application of Hadoop technology in the construction of the payment system of China Mobile group. In this case the Hadoop cloud computing technology, realize the distributed data and computing framework, distributed & concurrent computing on massive data. Through the mechanism of Hadoop, we are able to enhance the ability of parallel processing, to meet the demand of mobile payment, to diversify the payment platform access need, system robustness has also been greatly improved.
[Key words] China Mobile Hadoop HDFS MapReduce Mobile payment Scheduling engine Task engine
引言
科學技術及互聯(lián)網(wǎng)的發(fā)展,推動著大數(shù)據(jù)時代的來臨?!盎ヂ?lián)網(wǎng)+”的創(chuàng)新模式使得傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)融合發(fā)展,形成了更廣泛的以互聯(lián)網(wǎng)為基礎設施和實現(xiàn)工具的新經(jīng)濟發(fā)展模式,也使得大數(shù)據(jù)的處理越來越引人注目。
Hadoop技術,在大數(shù)據(jù)分析以及非結構化數(shù)據(jù)蔓延的背景下,一出現(xiàn)就受到眾多大公司的青睞。迄今為止,Hadoop在互聯(lián)網(wǎng)領域已經(jīng)得到了廣泛運用,例如,Yahoo 使用4 000個節(jié)點的Hadoop集群來支持廣告系統(tǒng)和Web 搜索的研究;Facebook 使用1 000 個節(jié)點的集群運行Hadoop,存儲日志數(shù)據(jù),支持其上的數(shù)據(jù)分析和機器學習;百度用Hadoop處理每周200TB 的數(shù)據(jù),從而進行搜索日志分析和網(wǎng)頁數(shù)據(jù)挖掘工作,等等。
本文介紹的是中國移動某子公司在移動互聯(lián)網(wǎng)支付系統(tǒng)建設中(簡稱移動支付系統(tǒng)),成功運用Hadoop技術的典型案例。
一、Hadoop是什么
Hadoop是一個由Apache基金會所支持的用Java實現(xiàn)的開源分布式數(shù)據(jù)和計算框架,在由大量計算機組成的集群中實現(xiàn)了對海量數(shù)據(jù)進行分布式計算。允許用戶在不了解底層細節(jié)的情況下,使用分布式程序。充分利用集群的威力進行高速運算和存儲。
Hadoop框架的核心,是HDFS和MapReduce。HDFS為海量數(shù)據(jù)提供存儲,MapReduce為海量數(shù)據(jù)提供計算。
1.1 HDFS簡介
整個Hadoop的體系結構主要是通過HDFS來實現(xiàn)對分布式存儲支持,。
HDFS采用主從(Master/Slave)結構模型,由一個NameNode和若干DataNode組成的。存儲在 HDFS 中的文件被分成塊,然后將這些塊分散到多個DataNode中。NameNode負責管理文件系統(tǒng)命名空間和客戶端對文件的訪問操作。DataNode管理存儲的數(shù)據(jù)。
1.2 MapReduce簡介
MapReduce框架由一個JobTracker(調(diào)度引擎)和多個TaskTracker(任務引擎)共同組成。JobTracker負責調(diào)度構成一個作業(yè)的所有任務,這些任務被分發(fā)到空閑的TaskTracker上執(zhí)行。當一個作業(yè)被提交時,JobTracker接收作業(yè)內(nèi)容和配置信息,然后生成Map和Reduce任務指派給空閑的TaskTracker執(zhí)行,同時監(jiān)視它們的執(zhí)行情況,并重新分派失敗的任務。即如果TaskTracker出了故障,JobTracker會把任務轉(zhuǎn)交給另一個空閑的TaskTracker重新運行。
1.3 HDFS與MapReduce的結合
HDFS和MapReduce共同組成Hadoop分布式系統(tǒng)體系結構的核心。HDFS實現(xiàn)了分布式文件系統(tǒng),MapReduce實現(xiàn)了分布式計算處理。HDFS在MapReduce任務處理過程中提供了存儲支持,MapReduce在HDFS的基礎上實現(xiàn)了任務的分發(fā)、、執(zhí)行跟蹤等工作,二者相互作用,完成分布式集群的不同作業(yè)。
二、移動支付業(yè)務
移動支付也稱為手機支付,就是允許用戶使用其移動終端(通常是手機)對所消費的商品或服務進行賬務支付的一種服務方式。單位或個人通過移動設備、互聯(lián)網(wǎng)或者近距離傳感直接或間接向銀行金融機構發(fā)送支付指令產(chǎn)生貨幣支付與資金轉(zhuǎn)移行為,從而實現(xiàn)移動支付功能。移動支付將終端設備、互聯(lián)網(wǎng)、應用提供商以及金融機構相融合,為用戶提供貨幣支付、繳費等金融業(yè)務。
2.1 中國移動支付業(yè)務
本文介紹的移動支付系統(tǒng)是中國移動集團公司為了解決銀行繳費分省接入模式下網(wǎng)絡成本高、傭金成本高、運營成本高、用戶體驗不一致等問題,構建的集中運營、全網(wǎng)覆蓋的統(tǒng)一支付體系。
移動支付系統(tǒng)通過移動總部系統(tǒng)和銀行系統(tǒng)采用一點接入,完成總部(包括31個省公司)與全國性商業(yè)銀行開展移動總部對銀行總部的繳費服務合作,實現(xiàn)了客戶繳納手機話費和營銷活動費用的服務。后期,系統(tǒng)持續(xù)推進集中充值和支付能力建設,實現(xiàn)了分散向集中轉(zhuǎn)型、費率和能力雙統(tǒng)一。增加支持電子渠道繳費業(yè)務,支持電子充值營銷推廣。最大的亮點是對外提供了繳費能力平臺,實現(xiàn)了與天貓、移動商城的繳費合作,提供第三方支付能力的接入。系統(tǒng)建設示意圖如圖1所示。Hadoop技術,正是在此移動支付中實施應用的。
三、Hadoop技術在移動支付中的應用
移動支付系統(tǒng)提供了實時在線繳費和離線對賬結算兩部分。實時在線繳費負責完成實時繳費交易的處理,主要以HTTP即時請求的方式出現(xiàn)。離線對賬結算主要負責完成多方之間各類交易數(shù)據(jù)的每日對賬、定時結算、資金清分等,主要以文件批處理的形式出現(xiàn)。前文所提及的Hadoop應用主要體現(xiàn)在離線對賬結算功能中。
3.1 離線對賬結算架構方案
1)集群包括HDFS、MapReduce、YARN、Zookeeper和Hive。
2)集群通過JAVA接口訪問,包括對HDFS和Hive的基本操作。
3)各方對賬的底層就是文件的比對,兩方文件比對作為一個業(yè)務插件通過公共接口訪問操作集群。
4)對賬結算流程支持:
a.在HIVE中建立三張按省、日期進行分區(qū)的表,分別用于存放源比對數(shù)據(jù)、目標比對數(shù)據(jù)和雙方的差異數(shù)據(jù)
b.每次對賬開始先將源和目標的比對文件上傳到HDFS上
c.對賬業(yè)務插件將HDFS文件以Hive表的形式加載
d.通過程序調(diào)用執(zhí)行比對的業(yè)務邏輯sql,將差異數(shù)據(jù)形成差異表
e.差異生成組件再讀差異表對應的HDFS文件;
f.將數(shù)據(jù)導出到現(xiàn)有的數(shù)據(jù)庫中以備后續(xù)的處理訪問。
3.2 總體技術圖(圖3)
總體技術圖分為三部分:
1)調(diào)度管理子系統(tǒng):自主研發(fā)的管理系統(tǒng)WEBX,提供任務流程的定義,實現(xiàn)調(diào)度管理系統(tǒng)功能。
2)調(diào)度引擎子系統(tǒng):實現(xiàn)獲取調(diào)度管理定義的元數(shù)據(jù),并行運行各個任務流程,根據(jù)每個任務流程中的任務節(jié)點信息,分發(fā)給任務引擎執(zhí)行調(diào)度的分發(fā)工作。
3)任務引擎子系統(tǒng):實現(xiàn)對各種原子任務形成組件形成統(tǒng)一管理,對外開放統(tǒng)一接口來獲取調(diào)度引擎信息,通過key-value方式動態(tài)調(diào)用實際任務組件,實現(xiàn)任務的執(zhí)行。
從數(shù)據(jù)的流向看,劃分為調(diào)度層、服務層和數(shù)據(jù)層:
1)調(diào)度層:讀取元數(shù)據(jù)信息,啟動流程任務調(diào)度,分發(fā)給任務引擎處理。主要使用調(diào)度引擎實現(xiàn)各個流程的調(diào)度,核心的消息狀態(tài)觸發(fā)以及監(jiān)聽機制采用YARN實現(xiàn)。
2)服務層:調(diào)度管理系統(tǒng)來搜集定義以及管理各個任務流程元數(shù)據(jù)信息,使用任務引擎提供實際任務的執(zhí)行服務。主要采用任務引擎以及調(diào)度管理系統(tǒng)實現(xiàn),對任務的各個組件采用原子化的方式管理,滿足原子任務拼裝定義成復雜流程。其核心組件主要有:業(yè)務到達、文件備份、文件校驗、文件入庫、文件比對、差異生成等組件。
3)數(shù)據(jù)層:主要由Sybase以及HDFS組成,負責業(yè)務數(shù)據(jù)和文件的存儲
在功能層次上,劃分為前臺UI層、后臺邏輯層和網(wǎng)元接口層:
1)前臺UI層:前臺UI層負責向用戶展示UI界面,所有的用戶請求都通過apache前置機分發(fā)給后臺邏輯層。
2)后臺邏輯層:后臺邏輯層物理上由N個子系統(tǒng)組成, apache前置機負責將用戶的功能請求分發(fā)到不同的子系統(tǒng)上。
3)網(wǎng)元接口層:網(wǎng)元接口層負責獲取以及推送對外網(wǎng)元的相關接口數(shù)據(jù)。
四、性能表現(xiàn)
使用了Hadoop技術以后,相對于未使用hadoop的一期系統(tǒng),性能有了多方面不同程度的提升。為了方便比對,我們在兩個系統(tǒng)上各自運行測試任務,將兩個100萬記錄的文件進行逐行比對,并分別生成相同數(shù)據(jù)記錄與有差異的數(shù)據(jù)記錄。以下是一系列性能測試的結果,我們將其總結為圖表。
4.1 任務并發(fā)性能顯著增強
通過測試,我們發(fā)現(xiàn)由于一期系統(tǒng)采用數(shù)據(jù)庫進行任務處理,其處理效率取決于oracle數(shù)據(jù)庫的處理性能。因此,當數(shù)據(jù)庫滿負荷的情況下,其任務處理時間基本近似于任務的串行處理時間。且數(shù)據(jù)庫是一個不易于擴展的節(jié)點資源,因此暫時認為其不適合處理并發(fā)多任務。
而二期系統(tǒng)由于采用多節(jié)點的Hadoop組織方式,因此任務分被分配到各個空閑節(jié)點上執(zhí)行,同時,在Hadoop組織方式下,處理節(jié)點是一個易于擴展的資源,因此,二期系統(tǒng)的并發(fā)處理能力要強 于一期系統(tǒng)。
4.2 具備線性擴展能力
從上表中可以看出,兩個系統(tǒng)相比,在少量任務的處理能力上,并沒有明顯的差距。但使用了Hadoop平臺的統(tǒng)一支付二期系統(tǒng)在多任務并發(fā)的場景下,其任務處理時間是一條增長更為平緩的曲線。因此,可以認為使用了Hadoop平臺,也充分繼承了其線性擴展能力的特點。
4.3 具備大文件處理 能力
這也是使用Hadoop平臺帶來的一個優(yōu)勢。
在一期系統(tǒng)中,正常情況下系統(tǒng)無法處理超大文件,需要 對文件進行分片,即分割為100MB大小的多個記錄文件。當內(nèi)容記錄較多時,會產(chǎn)生一大堆從001到999編號的文件,記錄 出錯概率大,運維管理難度高。Hadoop平臺天生對大文件有良好的支持,最新版本的Hadoop平臺在存儲時自動將大文件以128M大小的分片進行存放。因此,從應用視角,只需要操作一個文件,不必擔心其大小超過限制。這也為開發(fā)、測試、運維工作帶來了諸多多便利。
五、結束語
經(jīng)過不斷調(diào)優(yōu)和持續(xù)改進,歷時一年的不懈努力,二期系統(tǒng)終于在去年年底順利上線并投入運營。在該系統(tǒng)中,項目團隊首次采用了Hadoop云計算技術,提升了系統(tǒng)并行處理能力,不僅滿足了移動支付多樣化及第三方支付平臺接入的需要,系統(tǒng)吞吐量及健壯性也得到了極大的提高,滿足了互聯(lián)網(wǎng)時代大數(shù)據(jù)處理需求。
參 考 文 獻
[1]中國移動通信集團公司. 中國移動統(tǒng)一支付系統(tǒng)二期工程需求. 2014-03
[2]中國移動通信集團公司. 中國移動統(tǒng)一支付系統(tǒng)技術方案. 2014-04
[3]中國移動通信集團公司. 中國移動統(tǒng)一支付系統(tǒng)二期架構設計. 2014-06
[4]告訴你Hadoop是什么 .中國大數(shù)據(jù). 2014-06.http://www.thebigdata.cn/Hadoop/10722.html
[5]詳解Hadoop核心架構 .中國大數(shù)據(jù). 2014-07.http://www.thebigdata.cn/Hadoop/10973.html
[6]為什么hadoop對你大數(shù)據(jù)處理的意義重大.中國大數(shù)據(jù). 2014-03.http://www.thebigdata.cn/Hadoop/9064.html
[7]移動支付的五種技術.價值中國. 2013-04. http://www.chinavalue.net/BookInfo/Comment.aspx?CommentID=48215
[8]陸嘉恒. Hadoop在百度中的應用. 腳本百事通. http://www.csdn123.com/html/itweb/20130916/120496_120504_120501.htm