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

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