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