沈雷明,別志銘
(1.中國移動通信集團上海有限公司 上海 200060;2.珠海世紀鼎利通信科技股份有限公司 珠海 519085)
伴隨電信行業(yè)3G/4G等業(yè)務(wù)的增加,數(shù)據(jù)量出現(xiàn)爆炸式增長,數(shù)據(jù)的規(guī)模已經(jīng)超過TB,達到PB級別。海量數(shù)據(jù)導(dǎo)致電信運營商的數(shù)據(jù)處理和存儲壓力急劇變大,而傳統(tǒng)的數(shù)據(jù)庫和數(shù)據(jù)倉庫越來越無法滿足電信行業(yè)的需求。許多電信運營商開始關(guān)注Hadoop技術(shù),但是電信運營商自身組織結(jié)構(gòu)復(fù)雜,產(chǎn)品和業(yè)務(wù)種類繁多,并且Hadoop技術(shù)也在快速發(fā)展。如何能統(tǒng)一、快速地滿足不同業(yè)務(wù)的不同需求?這個難題擺在所有人的面前。
(1)電信用戶數(shù)據(jù)量大
電信行業(yè)是個壟斷行業(yè),每個國家通常只有3家或4家電信運營商,這樣就導(dǎo)致了很多運營商擁有超過一億的用戶。
(2)用戶產(chǎn)生的數(shù)據(jù)量大
電信用戶每天都要接打電話,通過3G/4G使用互聯(lián)網(wǎng),即使用戶只是把手機連接到電信的網(wǎng)絡(luò)中,都會產(chǎn)生類似位置更新等數(shù)據(jù)。每個用戶每時每刻都在產(chǎn)生數(shù)據(jù),一億用戶匯聚起來,數(shù)據(jù)量非常龐大。
(3)用戶產(chǎn)生的數(shù)據(jù)多樣性
電信用戶打電話、發(fā)短信、使用互聯(lián)網(wǎng)等,還有客戶的位置、在線狀態(tài)等,每種數(shù)據(jù)結(jié)構(gòu)都不一樣,內(nèi)容也不一樣,其中有結(jié)構(gòu)化的數(shù)據(jù),也有非結(jié)構(gòu)化的數(shù)據(jù),非常復(fù)雜。
本文介紹了Hadoopdesigner系統(tǒng),它是基于Hadoop的數(shù)據(jù)建模平臺。該系統(tǒng)根據(jù)電信業(yè)務(wù)系統(tǒng)的特點,提取出類似 counter、KPI(key performance indicator,關(guān)鍵績效指標(biāo))等這樣的專業(yè)電信行業(yè)模型,是為電信行業(yè)的大數(shù)據(jù)建模量身打造的。Hadoopdesigner系統(tǒng)總體結(jié)構(gòu)如圖1所示。
其總體結(jié)構(gòu)是由模型處理、模型對象管理、智能服務(wù)等模塊構(gòu)成。
模型處理包括的功能有模型建立、模型智能評估和模型運行監(jiān)控。每個功能模塊的具體介紹如下。
(1)模型建立
建模人員拿到應(yīng)用的需求后,把需求中的具體業(yè)務(wù)分解成系統(tǒng)里面的實體對象。整個建模中,一般需要經(jīng)歷4個過程。
·業(yè)務(wù)模型建模。它主要解決業(yè)務(wù)層面的分解和程序化。
·專業(yè)領(lǐng)域建模。它主要是對業(yè)務(wù)模型進行抽象處理,生成專業(yè)的領(lǐng)域概念模型。
·邏輯建模。它主要是將專業(yè)領(lǐng)域模型的概念實體以及實體之間的關(guān)系進行邏輯化。
·物理建模。它主要解決如邏輯模型對不同實體的物
理化及性能等一些具體的技術(shù)問題。
其中邏輯模型和物理模型由Hadoopdesigner系統(tǒng)根據(jù)業(yè)務(wù)模型和專業(yè)領(lǐng)域的模型自動生成。建模人員只需要對業(yè)務(wù)模型和專業(yè)領(lǐng)域的模型進行設(shè)計。
(2)模型智能評估
常有的數(shù)據(jù)建模有范式建模法、維度建模法、實體建模法等。對于電信的信令分析應(yīng)用來說,一般采用維度建模法。針對各個維度作大量的預(yù)處理,如按照維度進行預(yù)先的統(tǒng)計、分類等。通過這些預(yù)處理,能夠極大地提升系統(tǒng)的處理能力。Hadoopdesigner系統(tǒng)就是通過可視化的界面,輔助建模人員使用維度建模法實現(xiàn)應(yīng)用,并且對設(shè)計的模型進行專業(yè)的智能評估和分析,給出分析報告。
(3)模型運行監(jiān)控
業(yè)務(wù)和數(shù)據(jù)建模是個復(fù)雜的過程,對于復(fù)雜的應(yīng)用,不可能一下子就能設(shè)計出非常合適的模型,需要對模型運行過程進行監(jiān)控,及時地發(fā)現(xiàn)問題和解決問題,以完成對模型的持續(xù)優(yōu)化。
建模人員在業(yè)務(wù)模型建模和專業(yè)領(lǐng)域建模后,會從復(fù)雜的應(yīng)用中提取出實體、事件、說明、關(guān)系等抽象的對象,再通過Hadoopdesigner系統(tǒng)的可視化界面,建模人員把抽象對象配置到系統(tǒng)中,就完成了整個應(yīng)用建模過程的第一個階段。剩下的任務(wù)就是根據(jù)模型運行的情況,調(diào)整、優(yōu)化模型。目前Hadoopdesigner系統(tǒng)支持的常用模型有以下幾個類型。
(1)數(shù)據(jù)源模型

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