0 引言
隨著業務的快速發展、用戶的持續增加和移動互聯網的興起,中國移動正面臨著數據的爆炸性增長。如何快速地處理海量數據,及時有效地從海量數據中提取有價值的信息,是中國移動的商務智能(Business Intelligence,BI)系統亟須解決的問題。
BI系統從企業生產系統中提取出有用數據并進行清洗,然后經過抽取(Extraction)、轉換(Transformation)和裝載(Load),即ETL過程,將數據合并到一個企業級的數據倉庫里。在此基礎上。利用合適的查詢和分析工具、數據挖掘(Data Mining,DM)工具、在線分析(OnLine Analytical Processing,OLAP)工具等對其進行分析和處理,最后形成知識,支持企業決策。
數據的海量增長,處理運算的日益復雜,使傳統BI系統面臨越來越大的壓力,難以滿足需求,主要體現為以下兩點:
1)計算性能低。
傳統的BI系統,其BI能力的實現往往采用基于內存的串行機制。即將數據全部或批量導入內存中,再依次進行處理。其處理性能受限于單臺機器的內存容量和計算能力,無法支持海量數據的分析處理。
2)可擴展性差。
可擴展性是指處理性能隨系統規模增長的能力,是設計BI系統所追求的一個重要目標。目前的BI系統缺乏一個設計良好、可擴展性強的架構,系統的效率不是隨著計算資源的增加而呈線性增長,當系統到達一定規模時會出現效率降低、執行時間難以預測等問題。
為滿足海量數據的計算要求,保持快速的響應和高性能執行,實現BI算法的并行化是解決上述問題的關鍵。針對以上問題,本文從現代BI系統的需求出發,研究并實現了一種基于并行機制的商務智能系統BI-PaaS,該系統搭建在中國移動“大云”基礎設施之上,實現了并行的ETL、DM、OLAP、Report等各類BI能力,使得BI應用能夠滿足海量數據處理需求。
1 BI-PaaS
1.1 BI-PaaS架構
PaaS(Platform as a Service)是一種基于云計算的服務,將云平臺能力進行封裝,并提供基于云基礎設施的開發和托管環境。典型的PaaS有Force.com和Google App Engine。PaaS為滿足應用的便捷開發和高性能執行提供了一種有效的手段。因此,本文將PaaS的設計原理引入BI系統,提出了BI-PaaS系統,該系統由開發套件、BI-PaaS平臺兩部分組成,體系架構如圖1所示。
圖1 BI-PaaS體系架構
開發套件由一系列BI任務圖形設計器和一個集成器組成。BI任務圖形設計器包括ETL設計器、DM設計器、OLAP設計器和Report設計器。各個設計器分別將對應的BI能力以元數據的方式進行封裝,并進行圖形化展示。應用開發者選擇各種BI圖形設計器,以拖拉的方式進行相應BI任務開發。各個BI任務開發完成之后,采用集成器把各個BI任務組裝集成為BI應用,生成元數據描述文件,并將其部署到BI-PaaS平臺。開發套件的引入,及其圖形化的操作方式,極大地提高了BI應用的開發效率。
BI-PaaS平臺包括應用層、運維層、引擎層、云化能力層和云資源層。云資源層采用Hadoop構建分布式存儲和并行計算環境,為BI-PaaS平臺提供支撐;云化能力層提供了ETL、OLAP、DM、Report等各類BI組件的并行實現;引擎層負責ETL、OLAP、DM、Report等BI任務的集成與解析;運維層提供用戶注冊、應用部署、應用監控、數據隔離、應用執行等基礎服務;應用層是外部租戶訪問BI應用的接口。
1.2 BI-PaaS特點
BI-PaaS不同于傳統的BI產品,具有以下特點:
1)高度并行,分布存儲。
BI-PaaS以Hadoop來搭建底層基礎設施。Hadoop是一個被設計用來在由普通硬件設備組成的大型集群上執行分布式應用的開源框架,包括兩大核心元素:MapReduce和HDFS(Hadoop Distributed File System)。MapReduce是一種并行編程模型,基于此模型可以實現具有良好可擴展性的算法;HDFS是一種分布式文件系統,提供了穩定的數據存儲環境。BI-PaaS建立在Hadoop之上,將ETL、DM、OLAP、Report等各類BI能力并行化,以滿足海量數據存儲、計算和分析的需要。
2)近似線性的高可擴展性。
隨著系統負荷的變化,BI-PaaS可動態調整存儲和計算節點的數量,來滿足BI系統的計算需求,保證穩定的響應時間與執行性能。加速比接近線性,具有良好的擴展型和資源利用效率。
3)開發與運營分離。
BI-PaaS為開發者提供便捷的開發和部署環境,及高性能和高可擴展的運行環境。BI-PaaS定義了自己支持的應用程序模型,為開發和托管環境提供一個理解應用程序的統一規范。開發環境提供了定制和部署應用程序的基本編程元素。托管環境為所托管的應用提供了可伸縮的計算和存儲資源,保證應用的高效執行。
2 并行機制
2.1 MapReduce并行模型
MapReduce是Dean等。在2004年提出的并行框架。在該框架下,數據被抽象為(key,value)的形式,而針對數據的操作被抽象為Map和Reduce兩個過程。其中,Map是將一個作業分解成為多個任務,而Reduce就是將這些任務處理的結果匯總,從而獲得最終結果。用戶需要自定義實現Map和Reduce兩個函數。
如圖2所示,一個MapReduce任務將輸入數據集分割成相互獨立的若干塊,以便Map能以完全并發的方式進行。一個MapReduce的任務包括3個階段:第一個階段進行數據分割,分割后的每個數據塊都包含若干個(key,value)對,并被分發給各節點。第二個階段進行業務處理,逐行讀入數據塊中的<key,value>對,經過處理后得到中間結果。中間結果同樣以<key,value>的形式表示,并按照key值排序、分區,把key值相同的結果合并在一起。第三階段進行Reduce操作,將各個Map的中間結果復制到Reduce節點,對相同key值的中間結果進行合并得到最終結果,并以(key,value)的形式輸出。
圖2 Map-Reduce編程模型
2.2 ETL并行實現
ETL負責數據的抽取、轉換和裝載,為后續的數據挖掘提供一系列較細粒度的預處理操作。本文基于MapReduce系統地實現了并行ETL,包括但不限于以下操作:屬性操作、缺值處理、去重復值、區間化、數據連接。下面舉例說明上述幾種ETL操作的具體并行化實現過程。
2.2.1 缺值處理
原始數據記錄中的某些屬性的缺值會影響數據挖掘算法對于屬性的識別與處理,必須予以填充。缺值處理是針對原始數據記錄中的缺值屬性用客戶指定數據值進行填充。并行缺值處理的實現包括一個Map,無Reduce。主要步驟如下。
1)預處理:總控節點將待處理數據分割為塊,分布式存儲到多集群環境中。
2)Map:
①從數據塊中逐行讀入<key,value)對,其中key為每行數據的偏移量,value為該行記錄的文本形式;
②解析value值,對其中的缺值屬性用用戶指定值替換,否則保持原始值不變;
③將處理結果形成Map的輸出(key,value)對,其中key為空文本,value為處理過后的每行文本;
④將Map處理后的結果輸出到HDFS。
2.2.2 去重復值
去重復值是將數據樣本中的重復記錄進行刪除,只保留重復記錄中的一條。并行行內去重包括一個Map和一個Reduce。主要步驟如下。
1)預處理:總控節點將待處理數據分割為塊,分布式存儲到集群環境中。
2)Map:
①從數據塊中逐行讀入<key,value>對,其中key為每行數據的偏移量,value為該行記錄的文本形式;
②直接將該行記錄形成M印的輸出(key,value)對,其中key為該行記錄,value為空文本。
3)Reduce:
①收集具有相同key值的數據,直接形成Reduce的輸出(key,value)對,其中key為整行數據,value為空文本,即可實現去除重復記錄;
②將結果輸出到HDFS。
2.2.3 屬性操作
屬性操作主要包括屬性交換、屬性刪除、屬性值添加。現以屬性添加為例,說明具體的并行化實現。屬性值添加是指針對每一行數據,根據確定的計算公式,對已有屬性值進行計算,獲得新屬性值,并添加到記錄的末尾。并行屬性添加操作包括一個Map,無Reduce。添加新屬性的主要步驟如下。
1)預處理:總控節點將待處理數據分割為塊,分布式存儲到集群環境中。
2)Map:
①從數據塊中逐行讀入(key,value)對,其中key為每行數據的偏移量,value為該行記錄的文本形式;
②解析value值,獲得其中每個屬性的值,然后按照計算表達式對已經有屬性值進行計算,獲得新屬性值,寫在該行記錄的末尾:
③將處理結果形成M印的輸出(key,value)對,其中key為空文本,value為處理過后的每行文本;
④將Map處理后的結果輸出到HDFS。
2.2.4 區間化
區間化是針對連續性數值型數據,將其規約為某些區間值。例如用戶年齡字段,可按照如下規則實現區間化:0~9歲歸為類0,10~19歲歸為類1,依此類推,90歲以上歸為類9。并行區間化包括一個Map,無Reduce。主要步驟如下。
1)預處理:總控節點將待處理數據分割為塊,分布式存儲到集群環境中。
2)Map:
①從數據塊中逐行讀入(key,value)對,其中key為每行數據的偏移量。value為該行記錄的文本形式;
②解析value值,獲得其中所需處理的屬性的數值,在區間化映射關系的指導下,將原數值型數據替換為相應的區間類別;
③將處理結果形成Map的輸出(key,value)對,其中key為空文本,value為處理過后的每行文本;
④將Map處理后的結果輸出到HDFS。
2.3 數據挖掘并行實現
數據挖掘是指從大量的、不完全的、有噪聲的、模糊的數據中提取隱含的、未知的、非平凡的及有潛在應用價值的信息或模式。數據挖掘的一個重要功能是數據分類,即將數據映射到預先定義好的群組或類。目前常用的分類方法為基于決策樹的方法。
本文基于Map Reduce機制實現了并行數據挖掘,下面以決策樹為例說明數據挖掘的并行化實現。
用決策樹進行分類主要包括兩個步驟:第一步是利用訓練集生成一棵決策樹,建立決策樹模型,這個過程實際上是一個從數據中獲取知識,進行機器學習的過程;第二步是利用生成的決策樹對輸入數據進行分類,對輸入的記錄,從根節點依次測試記錄的屬性值,直到到達某個葉子節點,從而找到該記錄所在的類。
決策樹生成方法是通過自頂向下增長節點實現的,生成過程如圖3所示。具體步驟如下:
圖3 決策樹構建過程
1)遍歷設定數據集合,確定決策樹當前層每個分支節點分別對應的未分類數據集。
2)根據每個分支節點分別對應的數據集和候選屬性集合,通過分別計算候選屬性的信息增益值。選取具有最大信息增益值的數據屬住作為該節點對應的決策屬性。
3)根據每個分支節點分別對應的決策屬性的屬性值,分別生成每個分支節點的決策樹分支。
4)分別判斷每個決策樹分支節點對應的數據集是否對應分類屬性的同一屬性值。如果結果為否,則決策樹分支下的爺點確定為當前層的下一層的分支節點,并將當前候選屬性集合減去當前決策屬性,作為該分支的候選屬性集合,并將下一層作為當前層返回1);如果是,則執行5)。
5)將判斷結果為“是”的決策樹分支下的節點分別確定為其所在分支的最后一個節點。
重復1)~5),依次確定決策樹第二層至最后一層各節點對應的數據屬性.直到各分支下最下層節點對應的數據集,其中所有記錄的分類屬性皆為同一屬性值,則完成決策樹的構建過程。
在第2)步中。其核心是為每個節點選取能最佳分類當前數據集的屬性,成為該節點的決策屬性。常用的ID3和C4.5等決策樹生成算法,都以每個候選屬性的信息增益值來衡量其分類能力。決策樹上每個節點選擇候選屬性中具有最高信息增益值的屬性作為最佳分類屬性,成為該節點的決策屬性。為得到特定候選屬性的信息增益值,需要統計待分類數據集中該屬性每個屬性值對應不同分類類別的頻度,進而計算該屬性的信息熵以及信息增益值。這是決策樹生成算法中最主要的計算階段。
因此,為了提高處理速度,對第2)步提供并行化實現(如圖4所示),以并行的方式確定決策樹中同一層每個候選節點分別對應的決策屬性,即以并行方式計算同一層上每個候選節點的各候選屬性的屬性值對應設定類別的頻度,進而根據所得頻度計算該屬性的信息增益值;以并行方式確定具有最大信息增益值的數據屬性為該候選節點對應的決策屬性。
圖4 確定決策屬性并行化過程
并行過程包括2個Map和2個Reduce,具體描述如下。
1)Map:
①從數據塊中逐行讀入<key,value>對,其中key為每行數據的偏移量,value為該行記錄的文本形式。
②解析value值,根據解析結果形成Map的輸出(key,value)對,其中key為分支編號+候選屬性名+候選屬性值+類別,value為局部頻度。即該分塊數據子集中所有未分類數據屬性的每個屬性值對應的頻度統計項。
③將Map處理后的結果輸出到HDFS。
2)Reduce:
收集具有相同key值的數據,并行合并相同分支下、具有相同候選屬性的不同屬性值的頻度統計項,并計算每個分支下、每個候選屬性的信息熵和信息增益值;Reduce輸出的(key,value)對為:key為分支編號,value為屬性名+信息增益值。
3)Map:
①對第2)步的Reduce輸出文件分塊并依次讀入每行數據,形成Map的輸出(key,value)對,其中key為分支編號,value為屬性名+信息增益值;
②將Map處理后的結果輸出到HDFS。
4)Reduce:
收集具有相同key值的數據,并行將具有相同(分支編號)的向量子集,按照信息增益值排序,選擇并返回最大信息增益值對應的候選屬性作為該分支編號對應節點的決策屬性。Reduce輸出的(key,value)中,key為分支編號+決策屬性名,value為空文本。
3 實驗
3.1 應用實例
客戶流失預測在電信領域是一個常見的應用實例,電信公司根據已有的客戶的歷史數據,對后期客戶流失行為進行預測,以便采取措施來挽留客戶。客戶流失預測的業務流程如圖5所示。
圖5 “流失預測”業務流程
客戶流失預測使用BI-PaaS的開發套件來開發,應用開發包括ETL開發、DM開發、Report開發和應用集成4個步驟。
1)使用ETL設計器生成ETL處理流。該流程通過缺值處理、去重復值處理,完成對數據的清洗工作;通過數據區間化處理,完成對數據的轉換工作,為數據挖掘算法產生合適的數據格式;通過屬性值添加處理,為后續數據挖掘算法準備一個類標簽屬性。
2)使用DM設計器生成數據挖掘處理流。該流程把經過ETL預處理的數據分為訓練集和測試集兩類。首先由具有先驗知識的訓練集數據訓練生成決策樹模型,然后使用該模型對測試集數據進行分類預測,以發現流失性強的客戶群體。
3)再利用Report設計器,以拖拽的方式生成報表格式,把數據挖掘得到的客戶預測結果以合適的方式進行展現。
4)最后通過集成器,設計BI應用的業務流程,將前面所設計的ETL任務、DM任務和報表任務進行集成,生成BI應用。
3.2 實驗配置
實驗數據是從中國移動的話單數據中抽樣獲得,每條記錄有49個屬性,兩份數據大小大約為10 GB和100 GB。實驗環境由60個PC節點組成,每個計算節點的硬件環境為4核CPU,8 GB內存,1 TB硬盤,1 GB網絡適配器。其中2個PC節點各作為NameNode和JobTracker,其他節點作為DataNode和TaskTracker。實驗使用的Hadoop版本是hadoop 0.20.1,blocksize設為64 MB且副本數設為2。
3.3 實驗結果及分析
分別采用數據量10 GB和100 GB作為實驗數據,ETL流程文件和DM流程文件統一設置50個Map和50個Reduce,實驗機器分別采用10,30和60個節點,用以研究不同DataNode節點數情況下加速比的性能,實驗結果如表1所示。
表1 基于Map Reduce的并行ETL時間對比
1)性能。
實驗結果表明采用10~60個節點就可以以較高性能支持100 GB數據的ETL操作和數據挖掘算法。而在經典商用數據挖掘工具中,由于缺乏可擴展性,一般僅能支持300 MB數據的挖掘。
2)擴展性。
本實驗采用10節點、30節點、60節點、32節點和64節點規模對并行數據處理和并行數據挖掘算法的擴展性進行測試。
圖6(b)中描述了隨著節點數增加的加速比情況。顯然,當節點不變時,處理的數據量增加,則加速比接近線性;當數據量不變時,增加節點,加速比接近線性。但是,當節點數量相對需要處理的數據量過多時,加速比反而因為非計算開銷而遠離理論加速比。實驗結果表明,并行數據處理和并行數據挖掘算法具有優秀的擴展能力。
圖6 數據并行處理時間性能和加速比
4 結語
BI-PaaS搭建于中國移動大云基礎設施之上,以Hadoop的強大并行計算和分布存儲能力為支撐,將ETL、DM、OLAP、Report等各類BI能力并行化。從而有效地支持電信運營的海量數據分析,提高電信領域數據分析性能、可擴展性,降低系統平臺成本。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:基于并行機制的商務智能系統BI-PaaS