謝志明
摘 要: 傳統的數據挖掘模式和方法已經不能適應如今數據的快速增長,分析了將傳統數據挖掘算法與云計算技術相結合的實現過程。通過研究云計算環境下海量數據挖掘的三層模型,發現該模型最大的優點是數據挖掘速度快、可靠性高,而且隨著數據量的增加,該模型的優勢也愈發明顯。
關鍵詞: 云計算; 傳統數據挖掘; 算法; 海量數據挖掘; 模型
中圖分類號:TP391 文獻標志碼:A 文章編號:1006-8228(2015)02-04-03
Study on massive data mining based on the cloud computing environment
Xie Zhiming
(Shanwei Vocational and Technical College, Shanwei, Guangdong 516600, China)
Abstract: The traditional mode and method of data mining are unable to adapt to the rapid growth of data. The traditional data mining algorithm is analyzed to realize the process of combining with the cloud computing technology. Through the research of massive data mining three layer model based on the cloud computing environment, the advantages of this model are its rapid speed and high accuracy of the data mining. With the increasing of data quantity, the superiority of this model is getting more obvious.
Key words: cloud computing; traditional data mining; algorithm; massive data mining; model
0 引言
隨著云計算、物聯網、移動通信互聯網、社交網絡和數據自動采集技術的飛速發展,人類社會發生了翻天覆地的變化,與此同時,所產生的海量數據也正以前所未有的速度爆炸式增長。美國互聯網數據中心經研究發現,目前世界上每年產生的數據大約以50%左右的速度在增長,平均每兩年翻一番,而90%以上的數據是近幾年才產生的,大數據時代已經來臨。數據已經成為當今社會最為重要的社會資產,擁有信息量的多少已經成為決定和制約社會發展的重要因素。我們急需從這些數據中挖掘出寶貴且有價值的信息,以利于企業或部門對市場作出正確的決策。云計算數據挖掘平臺正好能高效地實現海量數據挖掘的需求,該平臺不僅能夠對資源進行動態分配和調度,而且還具有虛擬化和可用性高等特點。有學者為了證實云計算數據挖掘平臺的高效性,設計了一個并行數據挖掘模型的實驗,并在Google App Engine平臺上運行,經過多次實驗得出的結果是,在云計算數據挖掘平臺上對海量數據進行挖掘的效率明顯高于單機系統,且具有數據量越大,效率越明顯的趨勢。由此可見,將數據挖掘技術與云計算技術進行有效整合是一種確實可行的途徑。
1 云計算
1.1 云計算的定義
云計算經過幾年由概念到產業、由設想到技術的發展歷程,目前已經成為了主流的網絡架構方式。如果我們把云計算看作是一種通過網絡實現資源服務的模式的話,則云計算技術可以被認為是實現云計算模式的所有技術的總稱,這些技術包括虛擬化技術、分布式計算技術、分布式存儲技術、網絡技術等。云計算時代的到來打破了傳統IT技術固有的大型機模式,它帶來的理念創新使服務可以直接當作商品來售賣,既節約了計算成本又充分利用了計算資源,用戶在需要時就像我們平常對水電消費的模式一樣[1],這種模式對組織業務的快速變更和創新升級的需求帶來了極大的便利。
目前云計算服務形式主要有三種,一是基礎設施即服務(IaaS),其特點是通過網絡把不經封裝的計算和存儲資源以服務的形式提供給用戶進行使用,類似于自來水廠供水模式;二是平臺即服務(PaaS),其特點是以某種接口和協議把封裝好的計算和存儲資源供使用者進行調用而無需再面對底層數據庫資源;三是軟件即服務(SaaS),其特點是用戶無需具有任何云計算知識和技術,只需會使用特定開發商提供的軟件就可進行“云”操作。其基本功能結構如圖1所示。
[軟件即服務(SaaS)][平臺即服務(PaaS)][基礎設施即服務(IaaS)][代碼定制][應用軟件][應用代碼][應用服務][應用層] [信息檢索][任務調度][接口與協議][數據挖掘][平臺層] [平臺軟件][并行計算][存儲平臺][硬件平臺][虛擬化層][操作系統層][基礎
設施層] [云服務]
圖1 云計算服務體系基本功能結構圖
1.2 在云計算環境下對海量數據進行切分的分布式計算
Jeffrey Dean和Sanjay Ghemawat于2004年發表了一篇關于Google系統的MapReduce文章。它是一個分布式并行編程模型或框架,主要是對大規模數據集進行并行處理。與MPI不同,這種框架通常不是拆分計算而是以拆分數據來實現的分布式處理。MapReduce框架下的文件系統一般將大規模數據處理作業拆分為64MB的塊進行分布式存放,即若干個可獨立運行的Map任務,當需要對數據進行處理時,再由若干個Reduce任務合并由Map生成的中間結果以獲得最后的輸出結果。此計算過程是在各個塊所在的節點處直接發起,節省了從網絡上再次讀取數據所需的時間,實現計算主動“尋找”數據的功能,充分體現了分布式處理大數據的優越性。
值得一提的是,對大數據的處理采用MapReduce數據拆分策略是最適不過的了,然而當數據分塊較小就會導致數據處理效率低下。MapReduce框架在對同類型大數據塊進行同類型的計算處理時具有很好的自動分布式處理能力,但當數據類型復雜、數據較小、數據處理方式多變的應用模式下效率相對下降。為了實現Google系統良好的計算和數據的協作機制MapReduce和GFS是密不可分的,MapReduce失去GFS的支持,計算出來的結果是沒有太大意義的。但我們熟知的Google系統并非免費項目,所以Apache基金會在2005年以Google的系統為模板啟動了Hadoop項目,Hadoop經過多次版本的改良已經能很好地實現面向數據切分的分布式計算能力,同樣,Hadoop也有自己的文件分布式系統HDFS,目前Hadoop日益成為大眾接納的面向數據的標準系統。
2 在云計算環境下對海量數據進行挖掘
2.1 數據挖掘的定義
數據挖掘(Data Mining),指的是從海量數據中挖掘未知的、有價值的隱藏結構或規律且最終可被理解的知識的過程,又稱為數據庫中的知識發現[2](Knowledge Discovery in DataBase)。數據挖掘在整個數據挖掘任務中所處的地位如圖2所示。
[云端海
量數據][數據準備
(數據前處理)][數據挖掘\&][結果評價和表達
(數據后處理)][提取有價值信息\&]
圖2 數據挖掘邏輯結構圖
數據挖掘技術在商業上發揮出巨大的潛力,但是長期以來困擾企業不敢做海量數據挖掘的一個主要原因是,傳統意義上的并行數據挖掘會付出很大的人力財力,且實現技術復雜、時效性得不到保證,往往有些信息剛挖掘出來就已失效。云計算技術的出現,正好解決了企業多年以來想要解決的問題。云計算結合了分布計算、并行處理、虛擬化等技術,為大型數據處理應用提供動態、快速、廉價、可靠的資源服務,并已在互聯網、搜索引擎等應用方面獲得了巨大的成功。
2.2 數據挖掘中運用云計算技術體現出的優勢
⑴ 云計算技術可提供實時高效的分布式并行數據挖掘能力[3]。對于海量數據的挖掘,更能體現出它的優越性。同時云計算服務可為不同規模組織帶來優質的服務,如降低計算成本,對超大型數據的快速處理使許多大企業受益,同時也減輕了部分企業對大型高端機的依賴。
⑵ 云計算技術的數據挖掘門檻低,普通用戶使用云計算服務平臺即可實現按需服務,可為需求量日益增大的網絡用戶提供了良好的個性化信息服務。
⑶ 對于大眾用戶來說,無需關心利用云計算技術進行數據挖掘時底層的實現過程。對于數據塊的劃分、節點的加載以及計算任務調度等由系統自動分配。
⑷ 在并行化條件下,云計算具有動態增刪結點的能力,充分利用原有設備增加結點來提高海量數據的處理能力和速度,提高設備的使用率和生命力。
2.3 云計算環境下海量數據挖掘的模型
利用云計算技術對海量數據進行挖掘就是因為云計算本身具有海量的存儲能力和分布式并行處理的能力。一般情況下基于云計算環境下實現的海量數據挖掘模型如圖3所示。
圖3 云計算環境下海量數據挖掘模型的三層結構圖
頂層是面向用戶的應用層,該層包含兩個子系統:工作流子系統和用戶接口子系統[4]。其中工作流子系統提供友好和統一的用戶接口,用戶通過它可以輕松的建立起數據挖掘任務;用戶接口子系統主要用于實現用戶交互功能,通過用戶輸入模塊接收用戶的數據挖掘請求,用戶在此模塊可進行參數讀寫設置、選擇可行的數據挖掘算法,把預處理過的數據通過MapReduce平臺進行并行數據挖掘,最后通過展示結果模塊以可視化理解的方式呈現給用戶。
位于云計算應用層之下的是中間層,又叫中間件,這一層包含數據預處理子系統和并行數據挖掘子系統。數據預處理子系統主要是對海量不規則數據預先處理,這一步對于數據挖掘非常的重要,因為結果的輸出其實就是數據挖掘算法的輸入。在“云”環境下MapReduce計算模型主要適用于同類型、結構一致的數據,當所要挖掘的數據是形態各異且不規則的,就必須要對這類數據進行預處理。常用的方法有并行數據清洗、數據轉換、數據抽取、數據集成和加載等。因此要獲得高質量的數據挖掘結果,對數據的預處理是必不可少的。經過預處理的數據,其包含的臟數據、噪聲數據、無用數據等得到進一步減少,數據挖掘過程也就變得更加高效和更易于實現。
并行數據挖掘子系統是數據挖掘的核心。常用的算法主要包括并行關聯規則算法、并行聚類算法和并行分類算法等。目前已開發許多經典的數據挖掘算法,如關聯類的就有Apriori算法、Awfits算法、FP-growth算法等;聚類類的有K-均值算法、EM算法、DBSCAN算法等;分類類的有樸素貝葉斯算法、C4.5算法、HSC算法等。但是這些算法都不能直接運用在云計算平臺上進行海量數據挖掘,因為MapReduce是云計算的算法模型,要對現有的數據挖掘算法和并行化策略進行整合與改造,使算法能在云計算這個新平臺上最優化。現在已有許多專家和學者基于云計算平臺研究如何高效、快速、安全、準確地進行海量數據挖掘以迎接大數據時代的到來。
位于最底層的是云計算數據中心層,提供海量數據存儲及分布式并行數據處理。為保證云計算數據的高可用性和安全性,對數據實行分布式存儲的同時保留多份副本,當某數據結點出現故障不能正常使用時,云計算可自動調用副本結點數據保證運算的正常進行。由于云計算采用的工作模式是并行的,就算同時有大量用戶提出請求時也能迅速給予回應并提供服務。GFS和HDFS是目前兩種主流的云計算數據存儲技術,其中GFS是由Google開發的,而HDFS則是由Hadoop團隊在GFS基礎上研發的,它是完全開源的文件分布式系統HDFS。
2.4 云計算環境下增量數據挖掘工具
數據挖掘的結果是有實效性的,特別是時間越近的數據挖掘所得到的價值也就越大,這一點對商業來說尤為重要。然而,使用Hadoop系統下的MapReduce來處理海量數據需要頻繁的掃描數據庫,這將會耗費大量的計算資源和等待時間。隨著云計算產業的快速發展,為滿足不同用戶的個性化需求,市場急需要有能夠實現大數據實時處理的工具或軟件,而擅長批處理海量數據的Hadoop在此領域已經捉襟見肘。為此Twitter公司推出了一種分布式容錯實時處理大數據計算系統Storm[5],把現行的一些高效數據挖掘算法如K-means聚類算法、FP-growth增量算法等嵌入到這種流式系統下進行海量數據挖掘,為云計算行業的業務擴充提供了重要的技術支持。除了Storm以流式處理大數據著稱之外,Spark在對大數據進行實時處理時也非常卓越,目前Storm和Spark是云計算產業用于對大數據進行增量數據挖掘常用的兩種實時處理工具。
3 結束語
傳統的數據挖掘方法與現行主流的云計算技術相結合,大幅提升了對海量數據的挖掘能力。效率提高的同時,也發現了MapReduce在處理海量數據時會頻繁掃描數據庫,加大了云計算系統的負擔及成本的消耗,不利于中小企業或公司的應用和體驗。所以目前正著手研究如何通過減少對數據庫掃描的次數來提高數據挖掘效率,尤其是實時傳輸的是海量流式數據時,應如何在云計算平臺上進行優化。除此之外,還應關注數據在云傳輸過程中是否安全,存放在云端的數據隱私是否會被泄露,在多租戶架構下能否有效保證云端數據的完好隔離,數據使用完之后能否完全清除云端痕跡等等,用戶數據的合法性和安全性也還有待進一步證實和加強。
參考文獻:
[1] 王鵬等.云計算與大數據技術[M].人民郵電出版社,2014.
[2] [美]Mehmed Kantardzic著,王曉海,吳志剛譯.數據挖掘:概念、模型、
方法和算法(第2版)[M].清華大學出版社,2013.
[3] 賀瑤,王文慶,薛飛.基于云計算的海量數據挖掘研究[J].計算機技術
與發展,2013.2:69-72
[4] 何清,莊福振.基于云計算的大數據挖掘平臺[J].中興通訊技術,
2013.4:32-37
[5] 李浩.基于Twitter Storm的云平臺監控系統研究與實現.[D].東北大
學碩士學位論文,2013.