沈雷明,別志銘
(1.中國移動通信集團上海有限公司 上海 200060;2.珠海世紀鼎利通信科技股份有限公司 珠海 519085)
伴隨電信行業(yè)3G/4G等業(yè)務的增加,數(shù)據(jù)量出現(xiàn)爆炸式增長,數(shù)據(jù)的規(guī)模已經(jīng)超過TB,達到PB級別。海量數(shù)據(jù)導致電信運營商的數(shù)據(jù)處理和存儲壓力急劇變大,而傳統(tǒng)的數(shù)據(jù)庫和數(shù)據(jù)倉庫越來越無法滿足電信行業(yè)的需求。許多電信運營商開始關注Hadoop技術,但是電信運營商自身組織結構復雜,產(chǎn)品和業(yè)務種類繁多,并且Hadoop技術也在快速發(fā)展。如何能統(tǒng)一、快速地滿足不同業(yè)務的不同需求?這個難題擺在所有人的面前。
(1)電信用戶數(shù)據(jù)量大
電信行業(yè)是個壟斷行業(yè),每個國家通常只有3家或4家電信運營商,這樣就導致了很多運營商擁有超過一億的用戶。
(2)用戶產(chǎn)生的數(shù)據(jù)量大
電信用戶每天都要接打電話,通過3G/4G使用互聯(lián)網(wǎng),即使用戶只是把手機連接到電信的網(wǎng)絡中,都會產(chǎn)生類似位置更新等數(shù)據(jù)。每個用戶每時每刻都在產(chǎn)生數(shù)據(jù),一億用戶匯聚起來,數(shù)據(jù)量非常龐大。
(3)用戶產(chǎn)生的數(shù)據(jù)多樣性
電信用戶打電話、發(fā)短信、使用互聯(lián)網(wǎng)等,還有客戶的位置、在線狀態(tài)等,每種數(shù)據(jù)結構都不一樣,內(nèi)容也不一樣,其中有結構化的數(shù)據(jù),也有非結構化的數(shù)據(jù),非常復雜。
本文介紹了Hadoopdesigner系統(tǒng),它是基于Hadoop的數(shù)據(jù)建模平臺。該系統(tǒng)根據(jù)電信業(yè)務系統(tǒng)的特點,提取出類似 counter、KPI(key performance indicator,關鍵績效指標)等這樣的專業(yè)電信行業(yè)模型,是為電信行業(yè)的大數(shù)據(jù)建模量身打造的。Hadoopdesigner系統(tǒng)總體結構如圖1所示。
其總體結構是由模型處理、模型對象管理、智能服務等模塊構成。
模型處理包括的功能有模型建立、模型智能評估和模型運行監(jiān)控。每個功能模塊的具體介紹如下。
(1)模型建立
建模人員拿到應用的需求后,把需求中的具體業(yè)務分解成系統(tǒng)里面的實體對象。整個建模中,一般需要經(jīng)歷4個過程。
·業(yè)務模型建模。它主要解決業(yè)務層面的分解和程序化。
·專業(yè)領域建模。它主要是對業(yè)務模型進行抽象處理,生成專業(yè)的領域概念模型。
·邏輯建模。它主要是將專業(yè)領域模型的概念實體以及實體之間的關系進行邏輯化。
·物理建模。它主要解決如邏輯模型對不同實體的物
理化及性能等一些具體的技術問題。
其中邏輯模型和物理模型由Hadoopdesigner系統(tǒng)根據(jù)業(yè)務模型和專業(yè)領域的模型自動生成。建模人員只需要對業(yè)務模型和專業(yè)領域的模型進行設計。
(2)模型智能評估
常有的數(shù)據(jù)建模有范式建模法、維度建模法、實體建模法等。對于電信的信令分析應用來說,一般采用維度建模法。針對各個維度作大量的預處理,如按照維度進行預先的統(tǒng)計、分類等。通過這些預處理,能夠極大地提升系統(tǒng)的處理能力。Hadoopdesigner系統(tǒng)就是通過可視化的界面,輔助建模人員使用維度建模法實現(xiàn)應用,并且對設計的模型進行專業(yè)的智能評估和分析,給出分析報告。
(3)模型運行監(jiān)控
業(yè)務和數(shù)據(jù)建模是個復雜的過程,對于復雜的應用,不可能一下子就能設計出非常合適的模型,需要對模型運行過程進行監(jiān)控,及時地發(fā)現(xiàn)問題和解決問題,以完成對模型的持續(xù)優(yōu)化。
建模人員在業(yè)務模型建模和專業(yè)領域建模后,會從復雜的應用中提取出實體、事件、說明、關系等抽象的對象,再通過Hadoopdesigner系統(tǒng)的可視化界面,建模人員把抽象對象配置到系統(tǒng)中,就完成了整個應用建模過程的第一個階段。剩下的任務就是根據(jù)模型運行的情況,調(diào)整、優(yōu)化模型。目前Hadoopdesigner系統(tǒng)支持的常用模型有以下幾個類型。
(1)數(shù)據(jù)源模型
目前數(shù)據(jù)的來源主要是通過FTP傳輸過來的文件。文件格式一般是csv。從應用角度出發(fā),數(shù)據(jù)可分為CS、PS等,它們的數(shù)據(jù)字段信息等是不同的。因此需要根據(jù)不同的應用描述不同數(shù)據(jù)來源的信息,統(tǒng)一數(shù)據(jù)讀取接口。Hadoopdesigner系統(tǒng)提供一些常用的數(shù)據(jù)源定義模板,在導入后,直接修改便可以使用。
(2)ETL 模型
定義好數(shù)據(jù)的來源后,數(shù)據(jù)就會源源不斷地通過入云程序把數(shù)據(jù)導入Hadoop中。在數(shù)據(jù)真正入云前,需要定義數(shù)據(jù) ETL(extract,transform and load)的規(guī)則和模型,對數(shù)據(jù)進行清洗、轉換和集成以及提供數(shù)據(jù)入云的速率、數(shù)據(jù)錯誤率等數(shù)據(jù)質量報告等。對于常用ETL規(guī)則,Hadoopdesigner系統(tǒng)也提供一些模板,方便用戶直接使用。
(3)counter模型
counter模型是系統(tǒng)定義單一維度的統(tǒng)計匯總模型。它是系統(tǒng)里面非常重要的模型,是維度建模法的基礎。系統(tǒng)可以通過定義的counter模型,對需要統(tǒng)計分類的維度進行預處理和優(yōu)化。counter模型根據(jù)數(shù)據(jù)所處的位置分類,可以分為兩類:一是云外counter模型,主要定義在數(shù)據(jù)入云的同時,對單個維度的匯總統(tǒng)計;二是云內(nèi)counter模型,主要是定義在Hadoop里面,對單個維度的匯總統(tǒng)計。通過兩種類型的counter模型,可以充分利用系統(tǒng)的基礎和存儲能力,大大提高以后應用匯總統(tǒng)計的速度和能力。比如定義通話中的主叫成功次數(shù)、主叫失敗次數(shù)等,都可以定義為counter模型。不同的行業(yè)可以定義不同的counter庫。針對電信的信令分析行業(yè),筆者建立了counter模型庫,提供了常用的幾百個counter對象。
(4)KPI模型
counter模型相當于單個實體,KPI模型就是通過各種運算符等關系,連接多個不同實體,組成一個新的KPI模型。比如計算通話總次數(shù)這個KPI,就可以通過定義的通話成功counter模型加上定義的通話失敗counter模型,構成通話總次數(shù)的KPI模型。在實際的應用中,KPI模型會經(jīng)常被引用,并且不同的KPI可以直接相互地引用。例如需要定義通話成功率的KPI模型,就可以通過定義的通話成功counter模型加上定義的通話總次數(shù)的KPI對象,構成通話成功率的KPI模型。針對電信的信令分析行業(yè)的常用KPI模型,Hadoopdesigner系統(tǒng)也定義了上百個KPI模型,方便用戶組建模的時候調(diào)用。
(5)數(shù)據(jù)聚合模型
在對數(shù)據(jù)進行匯總統(tǒng)計的時候,需要指定對某個維度進行聚合。通過數(shù)據(jù)聚合的模型,可以很簡單地從上面定義的數(shù)據(jù)源模型的維度里,任意挑選一個維度進行處理,然后再從下拉框中選擇一個對這個維度聚合的算法。
聚合的算法常有兩類:一是對時間的聚合算法,對某個時間維度進行不同時間段的聚合,如15 min、30 min、1 h等聚合;二是通過特定的算法,把維度從細粒度變成粗粒度,如從信令中基站控制器的維度匯總到移動交換中心的維度。數(shù)據(jù)聚合模型需要根據(jù)具體的行業(yè)需求,開發(fā)出不同聚合算法的組件。
(6)數(shù)據(jù)分組模型
上述模型定義完成后,通常需要對數(shù)據(jù)進行分組和分類統(tǒng)計匯總等。數(shù)據(jù)分組模型就是用來實現(xiàn)數(shù)據(jù)分組和分類的模型。系統(tǒng)會根據(jù)數(shù)據(jù)源的模型,取出相關的分組維度,提供單選和多選、排序等方式方便用戶選擇需要的維度。
(7)靜態(tài)數(shù)據(jù)模型
在實際應用中,靜態(tài)數(shù)據(jù)的使用是不可避免的。因此對靜態(tài)數(shù)據(jù)的管理和建模也是很重要的。在信令分析應用中,如手機終端的靜態(tài)信息會經(jīng)常被使用。但是靜態(tài)數(shù)據(jù)不一定就是固定不變的數(shù)據(jù),只是該數(shù)據(jù)變化和更新較少,實際上還是需要對靜態(tài)數(shù)據(jù)進行增刪改等操作。靜態(tài)數(shù)據(jù)模型按關聯(lián)的位置可以分為兩種:一是在數(shù)據(jù)的分析階段關聯(lián)的靜態(tài)數(shù)據(jù),對于Hadoop來說,就是在MapReduce的map階段關聯(lián)的靜態(tài)數(shù)據(jù),如分析某個特定型號的手機的通話次數(shù),需要通過TAC號來關聯(lián)終端型號的靜態(tài)數(shù)據(jù);二是在匯總階段的關聯(lián)靜態(tài)表,對于Hadoop來說,即是MapReduce的redcue階段關聯(lián)的靜態(tài)數(shù)據(jù),如分析所有不同型號的手機的通話次數(shù),需要按TAC匯總后,再通過TAC號關聯(lián)終端型號的靜態(tài)數(shù)據(jù),當然這個例子也可以在map階段匯總,但是考慮到性能內(nèi)存等問題,最好是在匯總后進行關聯(lián)。
(8)對象集合模型
Hadoopdesigner系統(tǒng)支持按星型模式或雪花模式來設計。上述模型都是周圍的“小星星”或“小雪花”,那么結構的中心實體就是對象集合模型,是用戶最關心的基本實體和查詢活動的中心,為Hadoop的活動提供定量數(shù)據(jù)。它用來集合和引用上面各種模型和對象,組成一個實際的應用。為了方便用戶的建模,Hadoopdesigner系統(tǒng)擴展對象集合模型面向對象的設計,主要表現(xiàn)在以下兩個方面。
·支持多個對象的繼承關系。如A對象集合模型使用了通話成功次數(shù)的counter模型,B對象集合模型使用了通話失敗次數(shù)的counter模型,當C對象集合模型同時需要使用通話成功和失敗次數(shù)的counter模型時,就可以定義C從A和B繼承過來。
·重載的功能。如A對象集合模型使用了通話成功次數(shù)的counter模型,定義數(shù)據(jù)源模型是來自BSSAP對象,B對象集合模型也是使用了通話成功次數(shù)的counter模型,但是數(shù)據(jù)源來自RANAP對象。只需要定義B對象集合模型從A對象集合模型繼承,同時把數(shù)據(jù)源重新定義覆蓋即可。
(9)調(diào)度模型
在海量數(shù)據(jù)的分析中,做一次匯總統(tǒng)計是一個漫長的過程,快則半小時,慢則需要幾個小時。因此在很多的實際應用中,都需要定時來調(diào)度運行應用。Hadoopdesigner系統(tǒng)調(diào)度的最大特點在于能實現(xiàn)智能調(diào)度。它根據(jù)批量處理的多個模型的優(yōu)先級別運行模型。若系統(tǒng)不忙時,優(yōu)先等級比較低的模型可以運行;若系統(tǒng)忙時,根據(jù)系統(tǒng)的負荷選擇運行等級高的模型。
設計一個模型不難,維護和優(yōu)化好這個模型就顯得更為困難。因此Hadoopdesigner系統(tǒng)專門增加了智能學習模塊、智能優(yōu)化模塊、智能預測模塊,方便建模人員維護和優(yōu)化好模型,分別簡單介紹如下。
(1)智能學習模塊
在開啟智能監(jiān)控屬性時,系統(tǒng)會跟蹤模型的執(zhí)行計劃的每個模塊的屬性,如運行時磁盤的I/O、CPU和內(nèi)存的占用情況、運行的時間等,用于優(yōu)化模塊,找出最優(yōu)的模型以及給出影響了整個模型運行速度的對象。
(2)智能優(yōu)化模塊
根據(jù)學習到的模型的每個具體參數(shù)和系統(tǒng)里面配置的優(yōu)化參數(shù)閾值,決定是否啟動優(yōu)化。例如需要經(jīng)常使用的、重要的數(shù)據(jù),如果模型第1次運行需要多次從磁盤讀取同一數(shù)據(jù),那么模型第2次運行時會先把數(shù)據(jù)讀取到內(nèi)存中,以后多次從內(nèi)存中訪問。系統(tǒng)自動檢測當前的硬件和軟件狀態(tài),給出狀態(tài)報告,發(fā)送給管理員。
(3)智能預測模塊
主要是根據(jù)性能、調(diào)度、對象集合模型等做預測。例如一個應用統(tǒng)計一天內(nèi)打電話、發(fā)短信超過100次的用戶信息,系統(tǒng)會根據(jù)這個應用自動預測出騷擾電話、廣告識別、重大的突發(fā)事件等應用(地震、火災等)。當把應用預測出后,用戶下次做類似的應用時,不用重新開發(fā)和設計,只在預測結果上修改即可。
Hadoopdesigner系統(tǒng)的主要特點如下。
·該系統(tǒng)是基于電信大數(shù)據(jù)開發(fā)的數(shù)據(jù)建模工具,專門為電信行業(yè)的海量數(shù)據(jù)處理提供服務的一套工具。
·對于不同的電信業(yè)務需求,采用統(tǒng)一的、標準化模型,整個處理過程是可視化的,并且整個處理過程也是閉環(huán)的。
·根據(jù)電信行業(yè)的業(yè)務特點,不再需要專業(yè)的設計和開發(fā)人員響應不同的需要,只需要一個了解電信業(yè)務知識的建模人員就可以完成,大大降低了難度。
·該系統(tǒng)采用可視化配置界面,方便用戶把復雜的問題簡單化、模型化和可視化,提高建模人員處理問題的效率。
·該系統(tǒng)增加了智能服務的功能,方便建模人員根據(jù)具體的軟硬件情況以及應用需求,維護和優(yōu)化自己的模型,提升模型運行的速度。
在實際應用過程中,發(fā)現(xiàn)了Hadoopdesiger系統(tǒng)的一些不足,筆者總結了一些經(jīng)驗。大數(shù)據(jù)的建模既涉及業(yè)務知識,也涉及具體的技術,既需豐富的電信行業(yè)經(jīng)驗,同時也需要一定的信息技術。要實現(xiàn)數(shù)據(jù)模型,最重要的是需要一個非常適用的方法論,指導對業(yè)務進行抽象、處理,生成各個階段的模型。
該系統(tǒng)已經(jīng)在三四個省級運營商公司部署。某省運營商公司的信令共享平臺上的本系統(tǒng)已正常運行一年多的時間。其中Hadoop的集群規(guī)模為400臺PC服務器,存儲容量為4 PB,數(shù)據(jù)增量為12 TB/日,記錄數(shù)約為216億條/日。目前建模平臺應用的場景主要有以下兩種。
·固定的需求。建模人員通過平臺配置好模型,周期性或定時運行任務,用戶通過界面查詢結果或把結果導出報表查看。
·突發(fā)型的臨時需求。接到需求后,快速定制好模型,直接運行任務后導出報表。
用戶通過使用建模平臺,實實在在地解決了問題,極大地改善了用戶體驗,獲得用戶好評。
1 Apache Software Foundation.The apache hadoop project.http://hadoop.apache.org/,2014
2 劉新,韓耀強,陳靚.解密電信行業(yè)大數(shù)據(jù)應用.http://www.ccidconsulting.com/article/3913.jhtml,2014-03-24
3 Liu P.電信行業(yè)中的大數(shù)據(jù).電信網(wǎng)技術,2013(8)
4 李勇,劉曉東.數(shù)據(jù)建模技術在電信業(yè)務支撐系統(tǒng)中的應用研究.計算機應用,2005(9)