康尚欽,李 軍,葉何亮,李 嫚
(1.中國電信股份有限公司廣東研究院網(wǎng)絡(luò)發(fā)展研究部,廣東 廣州 510630;2.中國電信集團(tuán)公司企業(yè)信息化事業(yè)部,北京 100032)
隨著電信全業(yè)務(wù)運(yùn)營的發(fā)展和移動互聯(lián)網(wǎng)時(shí)代的到來,電信運(yùn)營商傳統(tǒng)的聯(lián)機(jī)采集系統(tǒng)正面臨著海量數(shù)據(jù)采集和處理的壓力。運(yùn)營商需根據(jù)業(yè)務(wù)需求和運(yùn)營管理需要,構(gòu)建集約、高效的聯(lián)機(jī)采集系統(tǒng)[1]。本文研究如何通過分布式計(jì)算技術(shù)實(shí)現(xiàn)電信聯(lián)機(jī)采集系統(tǒng)的采集提速和處理能力提升,以及建設(shè)運(yùn)營成本的降低。
計(jì)費(fèi)采集系統(tǒng)從各個(gè)交換網(wǎng)元和業(yè)務(wù)平臺采集話單、賬單等數(shù)據(jù),完成處理、分揀,并提供給HotBilling、結(jié)算等系統(tǒng)進(jìn)行后續(xù)處理。計(jì)費(fèi)數(shù)據(jù)采集的方式分為在線采集、聯(lián)機(jī)采集、離線采集三種。聯(lián)機(jī)采集是數(shù)據(jù)采集的主要方式。聯(lián)機(jī)采集是指計(jì)費(fèi)系統(tǒng)直接通過網(wǎng)絡(luò)實(shí)現(xiàn)聯(lián)網(wǎng)采集后付費(fèi)數(shù)據(jù)源的采集方式,包括采集任務(wù)管理、采集上傳/下發(fā)、數(shù)據(jù)校驗(yàn)、記錄采集日志、提交數(shù)據(jù)處理、回退處理等過程。
目前部分省級電信運(yùn)營商的聯(lián)機(jī)采集系統(tǒng)存在硬件老化、設(shè)備分散、采集環(huán)節(jié)過多等問題,影響了話單的實(shí)時(shí)性,也給運(yùn)營維護(hù)提出了較高的要求。隨著移動業(yè)務(wù)和增值業(yè)務(wù)的迅猛發(fā)展以及行業(yè)競爭的日益加劇,對計(jì)費(fèi)實(shí)時(shí)性的要求越來越高,實(shí)現(xiàn)聯(lián)機(jī)采集系統(tǒng)的采集提速和集約運(yùn)營成為緊迫的需求。在聯(lián)機(jī)采集系統(tǒng)集中和提速過程中,面臨一些問題有待解決:
(1)采集周期縮短,則單點(diǎn)采集能力需要提高數(shù)倍,并要將單文件串行處理變成并行處理,對采集進(jìn)程性能要求很高。
(2)采集系統(tǒng)集中后,需要完成以前數(shù)百個(gè)采集節(jié)點(diǎn)的采集任務(wù),系統(tǒng)負(fù)荷急劇升高,同時(shí)峰值負(fù)荷將提高至數(shù)十倍。
(3)采集進(jìn)程、話單處理進(jìn)程、分發(fā)進(jìn)程需要同時(shí)并發(fā),整個(gè)系統(tǒng)的并發(fā)進(jìn)程數(shù)較多,系統(tǒng)資源均衡難度較大。
(4)所有話單數(shù)據(jù)集中存儲,并發(fā)訪問,易出現(xiàn)磁盤I/O瓶頸。
分布式計(jì)算技術(shù)將需要大量運(yùn)算的問題分解成許多小的部分,把這些部分分配給許多計(jì)算節(jié)點(diǎn)去處理,最后把這些節(jié)點(diǎn)的計(jì)算結(jié)果綜合起來形成答案。分布式計(jì)算技術(shù)實(shí)現(xiàn)了分散資源的共享和跨計(jì)算節(jié)點(diǎn)的任務(wù)調(diào)度,為提升系統(tǒng)處理能力和橫向擴(kuò)展能力提供了一種很好的方法。
Hadoop是Apache軟件基金會管理的一個(gè)項(xiàng)目,它是Google開發(fā)的用來支持互聯(lián)網(wǎng)級數(shù)據(jù)處理的MapReduce編程模型和底層文件系統(tǒng)GFS的開源實(shí)現(xiàn)[2]。Hadoop可以在大量廉價(jià)的硬件設(shè)備組成的集群上運(yùn)行應(yīng)用程序,為應(yīng)用程序提供一組穩(wěn)定可靠的接口,旨在構(gòu)建一個(gè)低成本、高可靠性和高擴(kuò)展性的分布式系統(tǒng)。
Hadoop主要由 Hadoop Common、HDFS、MapReduce 等子項(xiàng)目組成[3]。MapReduce[4]計(jì)算模型的出現(xiàn)極大地簡化了分布式程序的編寫,使用戶可以脫離細(xì)節(jié)的困擾,集中精力于任務(wù)本身的描述和實(shí)現(xiàn)。HDFS[5]是一個(gè)分布式文件系統(tǒng),設(shè)計(jì)用來部署在廉價(jià)的硬件上,提供高容量、高容錯(cuò)性、高吞吐量的數(shù)據(jù)存儲。
Hadoop分布式計(jì)算框架可以很好地解決聯(lián)機(jī)采集系統(tǒng)集中和提速遇到的問題,主要體現(xiàn)在以下幾個(gè)方面:
(1)采用Hadoop框架將數(shù)百個(gè)CPU內(nèi)核組成強(qiáng)大的集群服務(wù)平臺[6],可以將系統(tǒng)的采集處理能力提升至單機(jī)的數(shù)百倍。
(2)采用Map-Reduce方式,可以將采集負(fù)荷壓力分散到數(shù)百個(gè)獨(dú)立節(jié)點(diǎn),大大提升系統(tǒng)峰值處理能力[7]。
(3)通過Job均衡器方式可以調(diào)度所有進(jìn)程的資源使用情況,從而保證采集資源合理使用,各個(gè)進(jìn)程平滑運(yùn)行。
(4)利用HDFS技術(shù),實(shí)現(xiàn)話單數(shù)據(jù)多節(jié)點(diǎn)分散存儲模式[8],每塊磁盤保證獨(dú)立訪問,從而避免了磁盤I/O瓶頸[9],同時(shí)整個(gè)系統(tǒng)的I/O帶寬擴(kuò)展數(shù)十倍。
“分布式聯(lián)機(jī)采集系統(tǒng)”利用分布式計(jì)算平臺的并行計(jì)算和分散存儲的優(yōu)勢,實(shí)現(xiàn)并行話單采集、并行話單處理以及文件分布式存儲,提高了整個(gè)采集流程的計(jì)算處理能力,同時(shí)提升了文件大批量讀寫性能,從而提高了聯(lián)機(jī)采集系統(tǒng)的速度和效率。
分布式聯(lián)機(jī)采集系統(tǒng)邏輯架構(gòu)如圖1所示。系統(tǒng)主要由云計(jì)算[10]引擎、聯(lián)機(jī)采集云計(jì)算模塊和云采集管理監(jiān)控三部分組成。云計(jì)算引擎(Hadoop)分為HDFS、Map/Reduce和HIVE三部分,分別實(shí)現(xiàn)分布式文件系統(tǒng)、分布式并行編程與執(zhí)行、數(shù)據(jù)摘要與查詢[11]。聯(lián)機(jī)采集云計(jì)算模塊包括文件云存儲處理、采集并行、話單處理、數(shù)據(jù)分發(fā)子模塊,以及相應(yīng)的策略模板管理。云采集管理監(jiān)控模塊包括對系統(tǒng)性能、告警、配置、日志、用戶的管理,以及對底層引擎文件存儲、作業(yè)性能的管理和對HDFS、Map/Reduce的監(jiān)控。
圖1 分布式聯(lián)機(jī)采集系統(tǒng)邏輯架構(gòu)
系統(tǒng)的部署架構(gòu)如圖2所示,采用全省集中的一級模式。服務(wù)器按用途可分為采集組、管理組和分發(fā)組。采集組配置了3臺名稱節(jié)點(diǎn)和66臺數(shù)據(jù)節(jié)點(diǎn)。管理組配置了1臺管理服務(wù)器,用于采集業(yè)務(wù)及系統(tǒng)參數(shù)的配置管理;配置了1臺話單服務(wù)器,用于話單處理、話單查詢及業(yè)務(wù)監(jiān)控。分發(fā)組配置了2臺分發(fā)服務(wù)器和1臺磁盤陣列,可以在線存儲1個(gè)月的計(jì)費(fèi)文件,用于系統(tǒng)數(shù)據(jù)分發(fā)。其中,2臺分發(fā)服務(wù)器采用負(fù)荷分擔(dān)、互為備份的工作方式,同時(shí)主/備分發(fā)服務(wù)器通過SCSI電纜連接到RAID5磁盤陣列。
圖2 分布式聯(lián)機(jī)采集系統(tǒng)部署架構(gòu)
分布式聯(lián)機(jī)采集系統(tǒng)的主要處理流程如圖3所示,分為配置采集作業(yè)、采集任務(wù)Map/Reduce、采集功能執(zhí)行、采集文件存儲、采集性能報(bào)告5個(gè)階段。
圖3 分布式聯(lián)機(jī)采集系統(tǒng)處理流程
在配置采集作業(yè)階段,分布式聯(lián)機(jī)采集系統(tǒng)根據(jù)聯(lián)機(jī)采集的業(yè)務(wù)要求,使用JobConf進(jìn)行作業(yè)配置文件并制定采集任務(wù)功能Jar包,然后通過JobClient提交采集作業(yè)。
在采集任務(wù)Map/Reduce階段,系統(tǒng)由JobTracker負(fù)責(zé)將一個(gè)采集作業(yè)(Job)分配為多個(gè)采集任務(wù)(Task),根據(jù)各個(gè)節(jié)點(diǎn)的資源情況,JobTracker將Map/Reduce任務(wù)分配到各個(gè) DataNode,并由 Task-Tracker調(diào)用Map子任務(wù),完成計(jì)費(fèi)文件的并行采集。
在采集功能執(zhí)行階段,由于不同類型的交換機(jī)對應(yīng)的采集功能以及協(xié)議有所區(qū)別,因此需要將不同交換機(jī)采集功能模塊封裝在Utility庫中,從而支持所有交換機(jī)采集功能。TaskTracker將啟動采集任務(wù)中對應(yīng)的Jar功能包,Jar功能包將根據(jù)采集任務(wù)中配置的交換機(jī)類型,調(diào)用Utility庫中對應(yīng)的采集模塊,執(zhí)行采集流程,實(shí)現(xiàn)交換機(jī)計(jì)費(fèi)文件的聯(lián)機(jī)采集。
在采集文件存儲階段,系統(tǒng)將不同采集任務(wù)(Task)采集到的CDR文件,存儲于內(nèi)存虛擬的本地緩存區(qū)(Buffer),TaskTracker調(diào)用Reduce任務(wù),自動掃描緩存區(qū),將采集完成的CDR文件進(jìn)行數(shù)據(jù)分發(fā)并存儲到HDFS系統(tǒng),并向JobTracker匯報(bào)。
采集完成后,系統(tǒng)會報(bào)告采集任務(wù)執(zhí)行情況,可用于監(jiān)控和運(yùn)營分析。報(bào)告內(nèi)容包含:
(1)采集性能,包含平均采集時(shí)長、最短采集時(shí)長、最長采集時(shí)長;
(2)預(yù)處理性能,包含平均時(shí)長、最短時(shí)長、最長時(shí)長;
(3)分發(fā)性能,包含平均時(shí)長、最短時(shí)長、最長時(shí)長;
(4)告警信息,包含告警信息、告警類型、告警時(shí)間、告警確認(rèn)人和短信派發(fā)人。
通過以上的研究,可以看到,與傳統(tǒng)的集中處理型聯(lián)機(jī)采集系統(tǒng)方案相比,基于分布式計(jì)算的聯(lián)機(jī)采集系統(tǒng)方案具有以下優(yōu)點(diǎn):
(1)提高了數(shù)據(jù)的可靠性。
基于分布式計(jì)算的聯(lián)機(jī)采集系統(tǒng)實(shí)現(xiàn)了話單數(shù)據(jù)的多副本存儲,并放置在集群的不同節(jié)點(diǎn)上,在提高數(shù)據(jù)訪問性能的同時(shí),使話單數(shù)據(jù)的保存更加安全,即使某個(gè)節(jié)點(diǎn)的數(shù)據(jù)因故障出現(xiàn)丟失,也不會破壞話單數(shù)據(jù)的完整性。
(2)提高了采集處理的時(shí)效性。
由于采用了分散存儲、分散處理的模式,避免了集中處理模式下的數(shù)據(jù)傳輸和處理性能瓶頸,話單采集處理的時(shí)效性會有較大提升。測試表明,原有75%以上的采集節(jié)點(diǎn)采集周期接近15分鐘甚至更長,引入分布式采集系統(tǒng)后,可將采集周期縮短至5分鐘,針對部分交換機(jī)采用虛擬內(nèi)存技術(shù),可以將采集周期縮短至1分鐘。
(3)提高了系統(tǒng)的可擴(kuò)展性。
集中處理型聯(lián)機(jī)采集系統(tǒng)通常需要通過垂直擴(kuò)展的方式實(shí)現(xiàn)服務(wù)器處理能力提升,升級成本大于部署更多相對便宜的服務(wù)器,同時(shí)性能提升幅度也有一定的上限。基于Hadoop的系統(tǒng)可以方便地通過增加數(shù)據(jù)節(jié)點(diǎn)提升處理能力,實(shí)現(xiàn)靈活、快速的水平擴(kuò)展[12]。
(4)降低了建設(shè)和運(yùn)營成本。
集中處理型聯(lián)機(jī)采集系統(tǒng)方案需要配置高性能的小型機(jī)及磁盤陣列。分布式聯(lián)機(jī)采集系統(tǒng)的節(jié)點(diǎn)服務(wù)器、管理服務(wù)器可部署在PC服務(wù)器上,數(shù)據(jù)節(jié)點(diǎn)可采用工控機(jī),數(shù)據(jù)存儲在本機(jī)硬盤上。在相當(dāng)?shù)挠?jì)算和存儲能力下,分布式聯(lián)機(jī)采集系統(tǒng)方案的建設(shè)投資約為集中處理型采集系統(tǒng)方案的三分之一。
原有聯(lián)采設(shè)備包括采集機(jī)124臺、磁盤陣列37臺、管理終端22臺,共計(jì)183臺。分布式聯(lián)機(jī)采集系統(tǒng)方案含服務(wù)器73臺,大大減少了設(shè)備數(shù)量,一方面降低了維護(hù)管理難度和人員需求,另一方面減少了設(shè)備能耗。
(5)便于話單數(shù)據(jù)分析與挖掘。
利用Hadoop上的數(shù)據(jù)倉庫Hive[13],可以實(shí)現(xiàn)高效的海量話單數(shù)據(jù)查詢,還可以分析用戶話務(wù)特征,分析競爭對手用戶的行為習(xí)慣,為產(chǎn)品套餐設(shè)計(jì)、維系挽留和市場開拓[14]提供有效、及時(shí)的數(shù)據(jù)支撐。
利用Hadoop分布式計(jì)算框架可以構(gòu)建低成本、高存儲能力和高處理能力的聯(lián)機(jī)采集系統(tǒng),有效提升采集速度,并可提供海量話單數(shù)據(jù)的在線查詢及數(shù)據(jù)挖掘能力,為企業(yè)業(yè)務(wù)發(fā)展提供有效數(shù)據(jù)支撐。
[1]姚文勝,李嫚,喬宏明,等.云計(jì)算在運(yùn)營商IT支撐系統(tǒng)領(lǐng)域的應(yīng)用研究[J].移動通信,2010,34(11):52-57.
[2]Apache.Hadoop[EB/OL].URL:http://hadoop.apache.org/,2012-09-07.
[3]程瑩,張?jiān)朴?,徐雷,?基于Hadoop及關(guān)系型數(shù)據(jù)庫的海量數(shù)據(jù)分析研究[J].電信科學(xué),2010(11):47-50.
[4]Dean J,Ghemawat S.MapReduce:Simplified data processing on large clusters[C]//Proc.of OSDI’04.Boston,MA,USA,2004:10.
[5]Apache.Hadoop Distributed Filesystem[EB/OL].http://hadoop.apache.org/hdfs/,2012-09-07.
[6]曾理,王以群.Hadoop集群和單機(jī)數(shù)據(jù)處理的耗時(shí)對比實(shí)驗(yàn)[J].硅谷,2009(19):55-56.
[7]陳全,鄧倩妮.云計(jì)算及其關(guān)鍵技術(shù)[J].計(jì)算機(jī)應(yīng)用,2009,29(9):2562-2567.
[8]Apache.HDFS Architecture[EB/OL].http://hadoop.apache.org/common/docs/current/hdfs_design.html,2012-09-07.
[9]李云桃.基干Hadoop的海量數(shù)據(jù)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.
[10]Wikipedia.Cloud Computing[EB/OL].http://en.wikipedia.org/wiki/Cloud_computing,2011-12-20.
[11]Apache.Hadoop Cluster Setup[EB/OL].http://hadoop.apache.org/common/docs/current/cluster_setup,2012-09-07.
[12]Tom White.Hadoop:The Definitive Guide[M].O’Reilly,2010.
[13]程苗,陳華平.基于Hadoop的Web日志挖掘[J].計(jì)算機(jī)工程,2011,37(11):37-39.
[14]賈文娟.基于Hive分布式計(jì)算與數(shù)據(jù)挖掘的關(guān)聯(lián)性營銷的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2011.