隨著互聯(lián)網(wǎng)尤其是移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的快速發(fā)展,目前我們已處于數(shù)據(jù)、信息過載的海量信息時代。據(jù)數(shù)據(jù)調查公司IDC 研究報告顯示:2011 年全球被創(chuàng)建和復制的數(shù)據(jù)總量為1.8 ZB,較去年同期,這一數(shù)據(jù)上漲了1 ZB,全球信息總量每過兩年就會增長1 倍。用戶面對海量信息卻很難找到自己真正感興趣的內容[1]。同時隨著運營商逐漸推出移動互聯(lián)網(wǎng)產(chǎn)品應用商店、閱讀、游戲、社區(qū)等產(chǎn)品,如何分析挖掘這些產(chǎn)品生成的海量數(shù)據(jù),將成為運營商迫切需要解決的問題。
云計算的出現(xiàn),使得數(shù)據(jù)挖掘平臺有了新的發(fā)展方向,也使得新一代的數(shù)據(jù)挖掘平臺成為可能。云計算是能夠提供動態(tài)資源、虛擬化和高可用的計算平臺。云計算平臺可被用來開發(fā)高性能的應用程序[2-3]。但是對于數(shù)據(jù)挖掘來說,海量數(shù)據(jù)本身具有噪聲、異構、算法復雜、技術復雜等問題,而現(xiàn)在的云計算開發(fā)平臺并沒有提供數(shù)據(jù)規(guī)約等功能。因此文章通過對于數(shù)據(jù)挖掘、云計算的詳細描述和分析,提出了基于云計算的數(shù)據(jù)挖掘平臺。該平臺架構基于云計算的基礎能力,并符合云計算軟件即服務(SaaS)的設計理念。該平臺還能極大減少運營商、企業(yè)在數(shù)據(jù)挖掘技術上的投入并能加快其挖掘業(yè)務的推出,縮短研發(fā)周期,進一步提高產(chǎn)品收益。
1 基于云計算的數(shù)據(jù)挖掘策略
1.1 數(shù)據(jù)挖掘
數(shù)據(jù)挖掘[4-6]是一個從大量的、不完全的、有噪聲的、模糊的、隨機的實際數(shù)據(jù)中提取隱含在其中的但具有潛在實用信息和知識的過程。從數(shù)據(jù)挖掘的定義可以看出數(shù)據(jù)挖掘是知識發(fā)現(xiàn)領域的一個重要技術,它涉及到人工智能、機器學習、模式識別、統(tǒng)計學等高技術領域,具體技術包括特征化、關聯(lián)、聚類、預測分析等。數(shù)據(jù)挖掘在互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)、電信、金融、科學研究等領域得到了廣泛的應用,例如Facebook 的好友推薦、和淘寶網(wǎng)的商品推薦、銀行的防欺詐分析等。傳統(tǒng)的數(shù)據(jù)挖掘技術建立在關系型數(shù)據(jù)庫、數(shù)據(jù)倉庫之上的,對數(shù)據(jù)進行計算,找出隱藏在數(shù)據(jù)中的模型或關系,并在大規(guī)模的數(shù)據(jù)上進行數(shù)據(jù)訪問和統(tǒng)計計算,整個挖掘的過程需要消耗大量的計算資源以及存儲資源[7]。
隨著云時代的到來和移動互聯(lián)網(wǎng)的快速發(fā)展,數(shù)據(jù)規(guī)模從MB、級發(fā)展到TB、PB 級甚至EB、ZB 級,并且面臨著TB 級的增長速度,數(shù)據(jù)挖掘的要求和環(huán)境也變得越來越復雜,從而形成“數(shù)據(jù)量的急劇膨脹”和“ 數(shù)據(jù)深度分析需求的增長”這兩大趨勢,使得40 年來一直適用的數(shù)據(jù)庫系統(tǒng)架構在海量數(shù)據(jù)挖掘方面顯得力不從心[8]。
綜合上述,傳統(tǒng)的數(shù)據(jù)挖掘技術及其體系架構在云時代的海量數(shù)據(jù)中已經(jīng)出現(xiàn)了不少問題,其中首先是挖掘效率的問題,傳統(tǒng)的基于單機的挖掘算法或基于數(shù)據(jù)庫、數(shù)據(jù)倉庫的挖掘技術及并行挖掘已經(jīng)很難高效地完成海量數(shù)據(jù)的分析;其次高昂的軟硬件成本也阻止了云時代數(shù)據(jù)挖掘系統(tǒng)的發(fā)展;最后傳統(tǒng)的體系架構不能完成挖掘算法能力的提供,基本是在以單個算法為整體模塊,用戶只能使用已有的算法或重新編寫算法完成自己獨特的業(yè)務。
云計算云計算[9-10]是一種商業(yè)計算模式,它將計算任務分布在大量計算機構成的資源池上,使各種應用系統(tǒng)能夠根據(jù)需要獲取計算力、存儲空間和信息服務。同時云計算是并行計算、分布式計算和網(wǎng)格計算的發(fā)展,或者說是這些計算科學概念的商業(yè)實現(xiàn)。
通常認為云計算包括以下3 個層次的服務:基礎設施即服務(IaaS)、平臺即服務(PaaS)、SaaS;其中IaaS 提供以硬件設備為基礎的計算、存儲和網(wǎng)絡服務,實現(xiàn)了對硬件資源的抽象并服務化提供,使得分布式計算和分布式存儲成為現(xiàn)實。
云計算具有一些特點[10-11]:
(1)虛擬化。云計算支持用戶在任意位置使用各種終端以獲取應用服務,所請求的資源來自云而不是固定的、有形的實體,并且對于用戶來說只需要使用云提供的服務即可。
(2)通用性。云計算不針對特定的應用,而是可以在云的支撐下構造出千變萬化的應用,同一個云可以同時支撐不同的應用運行。
(3)高可擴展性及超大規(guī)模。云的規(guī)??梢詣討B(tài)擴展,并且這種動態(tài)擴展對用戶是透明的,并且不影響用戶的業(yè)務和應用。同時這種擴展是超大規(guī)模的,如Google 云計算已經(jīng)擁有上百萬臺服務器,Amazon、IBM、微軟等也擁有幾十萬臺服務器。
(4)可靠性高。云計算使用多副本容錯、多計算節(jié)點同構可互換等措施來保障服務的高可靠性。
(5)經(jīng)濟性好。云的特殊容錯機制導致可以采用廉價的節(jié)點來構成云,而云的自動化集中式管理使得大量企業(yè)無需負擔日益高昂的數(shù)據(jù)中心管理成本。云的通用性使資源的利用率較之傳統(tǒng)系統(tǒng)大幅提升,因此用戶可以充分享受云的低成本優(yōu)勢。
1.3 數(shù)據(jù)挖掘云化策略
云計算的出現(xiàn)即給數(shù)據(jù)挖掘帶來了問題和挑戰(zhàn),也給數(shù)據(jù)挖掘帶來新的機遇—— 數(shù)據(jù)挖掘技術將會出現(xiàn)基于云計算的新模式。如何構建基于云計算的數(shù)據(jù)挖掘平臺也將是業(yè)界面臨的主要問題之一,創(chuàng)建一個用戶參與、開發(fā)技術要求不高的、快速響應的數(shù)據(jù)挖掘平臺也是迫切需要解決的問題。
從業(yè)界對云計算的理解來看,云計算動態(tài)的、可伸縮的計算能力使得高效的海量數(shù)據(jù)挖掘成為可能。云計算SaaS 功能的理解和標準化,使得基于的數(shù)據(jù)挖掘SaaS 化有了技術和理論的支持,也將使得數(shù)據(jù)挖掘面向大眾化和企業(yè)化。文章主要是從基于云計算平臺的數(shù)據(jù)挖掘服務化、挖掘算法并行化、挖掘算法組件化角度進行構建數(shù)據(jù)挖掘SaaS 平臺,如圖所示。
如圖1 所示,文章提出的基于云計算的數(shù)據(jù)挖掘平臺架構采用分層的思想:首先底層支撐采用云計算平臺,并使用云計算平臺提供的分布存儲以及分布式計算能力完成數(shù)據(jù)挖掘計算能力的并行實現(xiàn);其次數(shù)據(jù)挖掘平臺在設計上采用分布式、可插拔組件化思路,支持多算法部署、調度等;最后數(shù)據(jù)挖掘平臺提供的算法能力采用服務的方式對外暴露,并支持不同業(yè)務系統(tǒng)的調用,從而較方便地實現(xiàn)業(yè)務系統(tǒng)的推薦、挖掘等相關功能需求。
2 數(shù)據(jù)挖掘平臺云架構
云計算的分布式存儲和分布式計算促使了新一代數(shù)據(jù)挖掘平臺的變革。圖2 是基于云的數(shù)據(jù)挖掘平臺架構??紤]到挖掘算法和推薦算法的并行化和分布化是一個專門的、大的課題,因此文章暫不包含具體算法的并行化和云化的內容。
如圖2 所示,該平臺是基于云計算平臺實現(xiàn)的數(shù)據(jù)挖掘云服務平臺,采用分層設計的思想以及面向組件的設計思路,總體上分為3 層,自下向上依次為:云計算支撐平臺層、數(shù)據(jù)挖掘能力層、數(shù)據(jù)挖掘云服務層。
云計算支撐平臺層
云計算支撐平臺層主要是提供分布式文件存儲、數(shù)據(jù)庫存儲以及計算能力。中興通訊有自主研發(fā)的云計算平臺,該架構可以基于企業(yè)自主研發(fā)的云計算平臺,也可以基于第三方提供的云計算平臺。
數(shù)據(jù)挖掘能力層
數(shù)據(jù)挖掘能力層主要是提供挖掘的基礎能力,包含算法服務管理、調度引起、數(shù)據(jù)并行處理框架,并提供對數(shù)據(jù)挖掘云服務層的能力支撐。該層可以支持第三方挖掘算法工具的接入,例如Weka、Mathout 等分布式算法庫,同時也可以提供內部的數(shù)據(jù)挖掘算法和推薦算法庫。
數(shù)據(jù)挖掘云服務層
云服務層主要是對外提供數(shù)據(jù)挖掘云服務,服務能力封裝的接口形式可以是多樣的,包括基于簡單對象訪問協(xié)議(SOAP) 的Webservice、、HTTP、XML 或本地應用程序編程接口(API) 等多種形式。云服務層也可以支持基于結構化查詢語言語句的訪問,并提供解析引擎,以自動調用云服務。各個業(yè)務系統(tǒng)可以根據(jù)數(shù)據(jù)和業(yè)務的需要調用、組裝數(shù)據(jù)挖掘云服務。
文章提出的基于云計算的數(shù)據(jù)挖掘平臺與傳統(tǒng)的數(shù)據(jù)挖掘系統(tǒng)架構相比有高可擴展性、海量數(shù)據(jù)處理能力、面向服務、硬件成本低廉等優(yōu)越性,可以支持大范圍分布式數(shù)據(jù)挖掘的設計和應用。
3 基于云計算數(shù)據(jù)挖掘平臺的關鍵技術
3.1 云計算技術
分布式計算是解決海量數(shù)據(jù)挖掘任務,提高海量數(shù)據(jù)挖掘的有效手段之一,在理論和實踐上已經(jīng)獲得證實。分布式計算包含了分布式存儲和并行計算兩個層面的內容,而云計算平臺提供了分布式文件存儲和并行的計算能力,因此很好地解決了這兩個層面的內容。下面主要分析幾個主流的分布式文件系統(tǒng)和分布式并行計算框架,以更好地構建云計算數(shù)據(jù)挖掘平臺的核心支撐能力。
分布式文件系統(tǒng)有效地解決了海量數(shù)據(jù)存儲問題,并實現(xiàn)了位置透明、移動透明、性能透明、擴展透明、高容錯、高安全、高性能等關鍵功能。目前業(yè)界比較流行分布式文件系統(tǒng)有Google 文件系統(tǒng)(GFS)、分布式文件系統(tǒng)(HDFS)、文件系統(tǒng)(KFS),這3 種分布式文件系統(tǒng)都是基于Goolgle 提出的分布式文件系統(tǒng)理論進行研發(fā)的。Google提出的GFS 就是解決其海量數(shù)據(jù)存儲和搜索、分析等問題,而和KFS 是基于GFS 理論基礎上實現(xiàn)的開源系統(tǒng),并且在商業(yè)和學術領域得到了廣泛的應用。
分布式并行計算框架對于高效完成數(shù)據(jù)挖掘計算任務極其重要,并且它對分布式計算的一些技術細節(jié)進行了封裝,例如數(shù)據(jù)分布、任務并行、任務調度、負載平衡、任務容錯、系統(tǒng)容錯等,使用戶不需要考慮這些細節(jié),而只要考慮任務間的邏輯關系。這樣不僅可以提高研發(fā)的效率,還可以降低系統(tǒng)維護的成本。目前典型的分布式計算框架有:
。MapReduce 是提出的一個并行計算框架,它可以在大量PC 機上并行執(zhí)行海量數(shù)據(jù)的收集和分析任務。它把如何進行任務并行執(zhí)行、如何進行數(shù)據(jù)分布、如何容錯、網(wǎng)絡帶寬時延等問題的解決方案編碼,并封裝在了一個庫里面,使用戶只需要執(zhí)行數(shù)據(jù)運算即可,而不必關心并行計算、容錯、數(shù)據(jù)分布、負載均衡等復雜的細節(jié)。同時它又對上層應用提供良好簡單的抽象接口。MapReduce 主要應用在搜索、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘領域。
。Pregel 是Google 提出的迭代處理計算框架,它具有高效、可擴展和容錯的特性,并隱藏了分布式相關的細節(jié),展現(xiàn)給人們的僅僅是一個表現(xiàn)力很強、很容易編程的大型圖算法處理的計算框架。Pregel 的主要應用場景是大型的圖計算,例如交通線路、疾病爆發(fā)路徑、WEB 搜索等相關領域。
。Dryad 是微軟硅谷研究院創(chuàng)建的研究項目,主要用來提供一個基于windows 操作系統(tǒng)的分布式計算平臺,總體用來支持有向無環(huán)圖類 型數(shù)據(jù)流的并行程序。微軟于年宣布,停止對Dryad 進行版本升級,轉投Hadoop 即MapReduce 計算框架。
目前業(yè)界開源的云計算平臺平臺, 包含HDFS 和MapReduce,為海量數(shù)據(jù)挖掘平臺提供完備的云計算平臺支撐平臺[12]。
3.2 數(shù)據(jù)匯集調度中心
數(shù)據(jù)匯集調度中心實現(xiàn)對接入本平臺的業(yè)務數(shù)據(jù)的匯集,可以解決不同數(shù)據(jù)的規(guī)約問題,并支持各種不同的源數(shù)據(jù)格式。源數(shù)據(jù)格式支持聯(lián)機事務處理系統(tǒng)(OLTP)數(shù)據(jù)、聯(lián)機分析處理系統(tǒng)(OLAP)數(shù)據(jù)、各種日志數(shù)據(jù)、爬蟲數(shù)據(jù)等,同時要提供多種數(shù)據(jù)同步方式,例如數(shù)據(jù)庫實時同步、socket 消息同步、文件傳輸協(xié)議同步等各種各樣的方式,如圖3所示。
數(shù)據(jù)匯集調度中心主要是完成對不同類型數(shù)據(jù)的匯集。本數(shù)據(jù)匯集調度中心采用模板化設計技術,支持新數(shù)據(jù)的模板和元數(shù)據(jù)配置以達到不同業(yè)務數(shù)據(jù)的統(tǒng)一收集和規(guī)約。
3.3 服務調度和服務管理技術
為了能夠讓不同的業(yè)務系統(tǒng)使用本計算平臺,平臺必須要提供服務調度和服務管理功能。服務調度根據(jù)服務的優(yōu)先級以及服務和資源的匹配情況等進行調度,解決服務的并行互斥、隔離等,保證數(shù)據(jù)挖掘平臺的云服務是安全、可靠的,并根據(jù)服務管控進行調度控制。
服務管理實現(xiàn)統(tǒng)一的服務注冊、服務暴露等功能,不僅支持本地服務能力的暴露,也支持第三方數(shù)據(jù)挖掘能力的接入,很好地擴展數(shù)據(jù)挖掘平臺的服務能力。
3.4 挖掘算法并行化技術
挖掘算法并行化是有效利用云計算平臺提供的基礎能力的關鍵技術之一,涉及到算法是否可以并行、以及并行策略的選擇等技術。文章通過K-means 聚類算法并行化并行計算框架來說明挖掘算法的并行化技術[13]。
3.4.1 K-means 算法的主要思想
K-means算法的主要思想是基于使聚類性能指標最小化。這里所用的聚類準則函數(shù)是聚類集中每一樣本點到該類簇中心點距離平方之和,并使它最小化。如圖4 所示,K 均值算法的處理流程如下:首先,隨機地選擇k 個對象,每個對象代表一個簇的初始均值和中心;對剩余的每個對象,則根據(jù)其與各個簇的均值距離,將它指派到最相似的簇;然后計算每個簇的新均值。這個過程不斷重復,直到準則函數(shù)收斂。通常,采用平方誤差準則,其定義如(1):
其中,E 是數(shù)據(jù)集中所有對象的平方誤差和,p 是空間中的點,表示給定的對象,mi 是簇Ci 的均值。對于每個簇中的每個對象,首先要求出對象到其簇中心的均值的平方,然后再求和。
3.4.2 K-means 并行化思路
是以聚類中心來劃分聚類的,一旦k 個聚類中心確定了,聚類可立即完成。因此,這里主要講述如何并行實現(xiàn)更新聚類中心[14]。
在隨機的初始化k 個聚類中心以后,每一次任務的執(zhí)行都會更新當前個聚類中心的值。在映射階段,對于每一個樣本O S ,需要計算與其最近的聚類中心O i (0≤i ≤,然后輸出<i , O S >鍵值對。
在化簡(Reducer) 階段,框架會收集屬于相同鍵的值,相當于對每個聚類中心O i (0≤i ≤k -1) ,而離它最近的樣本都會作為值收集起來。這樣Reducer 里就可以利用這些樣本重新估計出k 個聚類中心,如所示:
這樣,在一輪MapReduce 完成后,新的聚類中心也已經(jīng)計算出來。通過比較本輪聚類中心與上一輪聚類中心差異度,可確定算法是否收斂。
4 結束語
文章通過對數(shù)據(jù)挖掘和云計算技術的發(fā)展分析,提出了基于云計算的數(shù)據(jù)挖掘平臺架構以及數(shù)據(jù)挖掘服務化的思路。本平臺不僅僅是基于云計算實現(xiàn)了一個數(shù)據(jù)挖掘平臺,同時也對數(shù)據(jù)挖掘平臺進行了化。本平臺可以為運營商、企業(yè)提供效益增值的數(shù)據(jù)挖掘應用,同時也減少了運營商、企業(yè)在數(shù)據(jù)挖掘技術上的投入。運營商、企業(yè)即可以創(chuàng)建自己內部的數(shù)據(jù)挖掘私有云,為內部產(chǎn)品提供數(shù)據(jù)挖掘服務,也可以提供數(shù)據(jù)挖掘公用云,為不同的企業(yè)提供數(shù)據(jù)挖掘服務。
參考文獻
[1] 云時代企業(yè)數(shù)據(jù)挖掘面臨的挑戰(zhàn)(1)[EB/OL].http://cloud./storage-134538_1.htm
[2] 陳康,鄭緯民. 云計算:系統(tǒng)實例與研究現(xiàn)狀[J].軟件學報,2009,20(5):1337-1348.
[3] 紀?。环N基于云計算的數(shù)據(jù)挖掘平臺架構設計與實現(xiàn)[D].青島:青島大學,2009.
[4] J Han, M Kamber. Data mining concepts and techniques[M].Third Edition.San Francisco,CA,USA:Morgan Kaufmann Publishers,2012.
[5] 邵峰晶,于忠清.數(shù)據(jù)挖掘原理與算法[M].北京:科學出版社,2009.
[6] 商琳,駱斌.一種基于數(shù)據(jù)倉庫的數(shù)據(jù)挖掘系統(tǒng)的結構框架[J].計算機應用研究,2000,17(9):63-65.
[7] 楊艦友, 唐彥. 云計算總體架構及其應用與商業(yè)模式探討[J]. 數(shù)字通信,2012,(3):3-6.
[8] 何清. 基于云計算的海量數(shù)據(jù)挖掘[C/OL]//第二屆中國云計算大會,2010 年5 月21-22 日,北京.http://blog.sina.com.cn/s/blog_66248a9e0100z38d.html
[9] 楊勇,董振江,陸平. 具備云計算特性的業(yè)務交付平臺及其關鍵技術研究[J]. 中興通訊技術,2011,17(5):55-57.
[10] 吳朱華.云計算核心技術剖析[M].北京:人民郵電出版社,2011.
[11] 劉鵬.云計算[M]. 北京:電子工業(yè)出版社,2011.
[12] 夏英, 楊選倫. 云環(huán)境中基于金字塔模型的影像數(shù)據(jù)存儲方法[J]. 重慶郵電大學學報(自然科學版),2012,24(6):669-674.
[13] 余永紅,向曉軍,高陽等. 面向服務的云數(shù)據(jù)挖掘引擎的研究[J]. 計算機科學與探索,2012,6(1),46-57.
[14]李智龍宿紹瑩唐鵬飛陳曾平. 基于數(shù)字信道化的正弦信號快速測頻方法[J]. 雷達科學與技術, 2011,9(5):55-58.