楊震宇
摘要:大規(guī)模數(shù)據(jù)處理分析工作,在單個(gè)處理節(jié)點(diǎn)上部署時(shí)往往會(huì)遇到機(jī)器性能局限所帶來(lái)的計(jì)算瓶頸。如今,技術(shù)更加先進(jìn)且成本低廉的分布式計(jì)算平臺(tái)為這一問(wèn)題帶來(lái)了改善的解決方案。文章運(yùn)用MapReduce框架這一優(yōu)勢(shì),研究了將數(shù)據(jù)挖掘的任務(wù)部署到分布式平臺(tái)上的方案以及提出了相關(guān)研究展望。
關(guān)鍵詞:MapReduce框架;Hadoop;數(shù)據(jù)挖掘方法;數(shù)據(jù)處理;聚類(lèi)算法 文獻(xiàn)標(biāo)識(shí)碼:A
中圖分類(lèi)號(hào):TP316 文章編號(hào):1009-2374(2017)04-0008-03 DOI:10.13535/j.cnki.11-4406/n.2017.04.005
1 概述
隨著時(shí)代發(fā)展,各行各業(yè)的日常運(yùn)營(yíng)過(guò)程中都會(huì)產(chǎn)生海量的數(shù)據(jù)信息,甚至這些信息正呈幾何級(jí)數(shù)增長(zhǎng)。無(wú)論是零售業(yè)、制造業(yè)還是政府機(jī)關(guān)和校園教育都可以從數(shù)據(jù)信息中發(fā)掘出有用的信息來(lái)幫助領(lǐng)導(dǎo)者做出決定,進(jìn)一步優(yōu)化自身發(fā)展的各處細(xì)節(jié)。數(shù)據(jù)挖掘就是解決這類(lèi)問(wèn)題的重要方法,但隨之而來(lái)的便是如何快速有效地處理超大規(guī)模數(shù)據(jù)的疑問(wèn),提高計(jì)算核心的計(jì)算能力的確是重要的解決方案,而這確實(shí)不易實(shí)現(xiàn)。
鑒于半導(dǎo)體技術(shù)的不斷進(jìn)步,科技工藝幾乎觸及其極限,當(dāng)年的摩爾定律已經(jīng)無(wú)法支撐著如今的制造廠商有效定期提升其產(chǎn)品的處理、計(jì)算能力。對(duì)于解決大數(shù)據(jù)信息的有效處理問(wèn)題,時(shí)下流行的方案便是應(yīng)用云計(jì)算,將分析處理任務(wù)交給分布式計(jì)算平臺(tái),在節(jié)約計(jì)算的時(shí)間同時(shí),巧妙地規(guī)避了硬件既定的制約。由當(dāng)年Google公司提出的MapReduce計(jì)算模型已成為了分布式計(jì)算平臺(tái)中首選的數(shù)據(jù)計(jì)算框架,本文將對(duì)在該框架下部署大規(guī)模的數(shù)據(jù)挖掘進(jìn)行研究,并探尋可行的解決
方案。
2 研究背景
20世紀(jì)60年代,IBM公司推出的CICS成為了最早研究中間件技術(shù)的嘗試,在80年代中期,貝爾實(shí)驗(yàn)室提出了Tuxedo,成為第一代正式中間件產(chǎn)品,90年代發(fā)展出很多不同用途的產(chǎn)品。中間件技術(shù)幫助信息能夠在不同系統(tǒng)甚至網(wǎng)絡(luò)環(huán)境中進(jìn)行傳輸,幫助分布式系統(tǒng)的計(jì)算方式取得了可喜的進(jìn)步。在后期也出現(xiàn)了如網(wǎng)格技術(shù)、移動(dòng)Agent技術(shù)、P2P技術(shù)等多方面的探索成果,但缺乏技術(shù)的統(tǒng)一標(biāo)準(zhǔn)也制約了它們廣泛應(yīng)用的能力。在21世紀(jì)初的幾年,世界范圍內(nèi)對(duì)于分布式計(jì)算平臺(tái)的研究方興未艾。當(dāng)科技界正探討如何在集群計(jì)算平臺(tái)中處理大數(shù)據(jù)樣本時(shí),美國(guó)科技公司Google的工程師團(tuán)隊(duì)率先提出了MapReduce框架的概念,并給出了實(shí)施方案,其中除了該計(jì)算框架,還包括分布式文件系統(tǒng)、海量數(shù)據(jù)的分布式數(shù)據(jù)庫(kù)系統(tǒng)、分布式鎖等重要設(shè)計(jì)模型。由于提出了一整套的分布式計(jì)算的解決方案,該框架的提出引起了業(yè)界廣泛關(guān)注并迅速普及。
利用MapReduce框架進(jìn)行數(shù)據(jù)處理的研究也取得了相當(dāng)多的成果:參考文獻(xiàn)[3]提出了在該框架下運(yùn)行機(jī)器學(xué)習(xí)算法程序來(lái)對(duì)文本信息進(jìn)行處理的方案,將大規(guī)模的文本處理并行化提升了運(yùn)算速率;參考文獻(xiàn)[4]在對(duì)MapReduce框架原理進(jìn)行深度研究后,提出了利用樹(shù)構(gòu)造算法與多路查詢算法對(duì)內(nèi)存讀寫(xiě)進(jìn)行開(kāi)銷(xiāo)評(píng)估,增強(qiáng)該框架的高并發(fā)情境中的讀寫(xiě)速率;參考文獻(xiàn)[5]提出了將成熟算法部署到MapReduce框架中求解高復(fù)雜度問(wèn)題的思路。
數(shù)據(jù)挖掘作為網(wǎng)絡(luò)時(shí)代最重要的信息處理技術(shù),已經(jīng)有了多種領(lǐng)域的應(yīng)用。參考文獻(xiàn)[6]中針對(duì)目前網(wǎng)站訪問(wèn)過(guò)程中用戶端加載速度不理想的現(xiàn)狀,提出對(duì)用戶瀏覽數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘處理,獲得個(gè)人喜好以及訪問(wèn)興趣,對(duì)網(wǎng)頁(yè)進(jìn)行預(yù)讀取,可以有效提升網(wǎng)頁(yè)加載速度;參考文獻(xiàn)[7]用過(guò)綜合運(yùn)用關(guān)聯(lián)算法以及聚類(lèi)算法可以實(shí)現(xiàn)一自適應(yīng)的檢測(cè)模型,可以有效實(shí)時(shí)檢測(cè)出DoS攻擊并分析查出異常的數(shù)據(jù)包的攻擊類(lèi)別;參考文獻(xiàn)[8]創(chuàng)新地將數(shù)據(jù)挖掘技術(shù)應(yīng)用于運(yùn)營(yíng)商客戶消費(fèi)行為的趨勢(shì)分析中,提出了多維度事實(shí)物理分類(lèi)聚類(lèi)算法,有效獲取多維數(shù)據(jù)中的數(shù)據(jù)類(lèi)型,能提高運(yùn)營(yíng)商提供服務(wù)的精確度;參考文獻(xiàn)[9]提出將數(shù)據(jù)挖掘方法應(yīng)用到教育領(lǐng)域中的EDM新技術(shù),通過(guò)發(fā)掘出收集的教育環(huán)境數(shù)據(jù)中的數(shù)據(jù)獨(dú)有的類(lèi)型信息,進(jìn)而發(fā)現(xiàn)受教育者的學(xué)習(xí)方式以及興趣,提升其學(xué)習(xí)效果。
由以上的研究成果可以發(fā)現(xiàn),分布式系統(tǒng)中的MapReduce框架能夠幫助多種大數(shù)據(jù)運(yùn)算高效完成多類(lèi)型、高強(qiáng)度的計(jì)算任務(wù)并提供更簡(jiǎn)潔易于管理的計(jì)算流程。數(shù)據(jù)挖掘算法也發(fā)展出了很多的應(yīng)用方案,能夠解決很多復(fù)雜情景中的分類(lèi)及趨勢(shì)分析問(wèn)題。本文將繼續(xù)對(duì)MapReduce框架與數(shù)據(jù)挖掘算法進(jìn)行合并研究,探究出將數(shù)據(jù)挖掘任務(wù)部署在MapReduce下的方案。
3 MapReduce并行化計(jì)算
作為分布式計(jì)算平臺(tái)中的計(jì)算框架,MapReduce主要完成了兩大任務(wù):(1)“Map”(映射),將要進(jìn)行處理或計(jì)算的數(shù)據(jù)樣本進(jìn)行分割并分發(fā)至從工作節(jié)點(diǎn);(2)“Reduce”(歸約),將各個(gè)從節(jié)點(diǎn)的數(shù)據(jù)計(jì)算結(jié)果統(tǒng)一進(jìn)行收集進(jìn)而獲取總的結(jié)果。程序設(shè)計(jì)者只需要將數(shù)據(jù)對(duì)象所需要進(jìn)行并行計(jì)算的部分做設(shè)計(jì),分發(fā)至各個(gè)從節(jié)點(diǎn)上,最后將需要進(jìn)行的數(shù)據(jù)歸約處理的規(guī)則“告知”Reduce節(jié)點(diǎn),而非需要詳細(xì)了解系統(tǒng)的底層設(shè)計(jì)。下面將對(duì)該框架進(jìn)行詳細(xì)的研究說(shuō)明:
3.1 Map與Reduce
如上文所介紹,Map、Reduce分別對(duì)應(yīng)了MapReduce框架需要進(jìn)行的兩大任務(wù),映射與歸約。通過(guò)將數(shù)據(jù)處理任務(wù)的合理分配,對(duì)節(jié)點(diǎn)的計(jì)算結(jié)果進(jìn)行規(guī)約匯總,能夠?qū)崿F(xiàn)實(shí)時(shí)的并行化計(jì)算,由于可以將處于同一網(wǎng)絡(luò)中的普通計(jì)算機(jī)虛擬化為分布式計(jì)算節(jié)點(diǎn),充分利用計(jì)算機(jī)內(nèi)存來(lái)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交換與運(yùn)算,能夠有效節(jié)省計(jì)算成本提高計(jì)算效率。
Map任務(wù)根據(jù)設(shè)計(jì)主要分為4大流程:record reader、mapper、combiner和partitioner:(1)record reader:負(fù)責(zé)解析分發(fā)的小的數(shù)據(jù)塊解析為
Reduce任務(wù)由框架的設(shè)計(jì)主要分為:shuffle and sort、reducer和輸出格式(output format)3大流程:(1)shuffle and sort:主要是將Map任務(wù)提交的輸出數(shù)據(jù)提取到reduce節(jié)點(diǎn)中,將中間結(jié)果進(jìn)行數(shù)據(jù)大小分析,滿足條件則直接儲(chǔ)存到內(nèi)存中,通過(guò)sort流程進(jìn)而對(duì)數(shù)據(jù)建立頂堆的規(guī)則進(jìn)行重組,可以幫助數(shù)據(jù)信息在reduce任務(wù)中進(jìn)行迭代處理;(2)reducer:對(duì)上一階段的處理好的作為輸入?yún)?shù),并利用已有的或自定義例如聚合、過(guò)濾等方式對(duì)數(shù)據(jù)進(jìn)行歸約處理。reduce函數(shù)的輸入是鍵以及包含與該鍵對(duì)應(yīng)的所有值的List記錄,例如:
3.2 框架工作流程
根據(jù)MapReduce框架的map與reduce任務(wù)的設(shè)計(jì),其框架的計(jì)算流程如圖1所示:
圖1 MapReduce計(jì)算流程示意圖
通過(guò)圖1所示,運(yùn)用Google公司提出的Hadoop分布式計(jì)算平臺(tái)的文件系統(tǒng)HDFS來(lái)實(shí)現(xiàn)樣本數(shù)據(jù)的存儲(chǔ)、傳輸以及讀取,預(yù)處理的數(shù)據(jù)由HDFS中的待處理數(shù)據(jù)分塊得出,框架將分塊后的數(shù)據(jù)塊讀入到Map任務(wù)中,通過(guò)數(shù)據(jù)解析模塊的處理,將鍵值對(duì)數(shù)據(jù)作為參數(shù)傳遞給map函數(shù)計(jì)算結(jié)果以鍵名存儲(chǔ)到list中,中間結(jié)果隨機(jī)傳輸?shù)较乱浑A段Reduce任務(wù)中,通過(guò)打亂并排序操作對(duì)中間結(jié)果進(jìn)行處理傳輸?shù)絩educe流程中,經(jīng)過(guò)歸約計(jì)算輸出格式化輸出存儲(chǔ)到HDFS中。該框架的主從模式的并行化計(jì)算的架構(gòu)由圖2展示:
圖2 MapReduce并行計(jì)算示意圖
通過(guò)圖2所示,主節(jié)點(diǎn)通過(guò)HDFS分發(fā)數(shù)據(jù)處理作業(yè)亦稱(chēng)作Job-Tracker作為分發(fā)工作的追蹤者,HDFS能夠進(jìn)一步與其余從節(jié)點(diǎn)通過(guò)接收分塊數(shù)據(jù)并進(jìn)一步map計(jì)算,上傳中間結(jié)果傳輸給reduce計(jì)算節(jié)點(diǎn)進(jìn)行歸約運(yùn)算,將計(jì)算結(jié)果上傳到HDFS供主節(jié)點(diǎn)讀取。
4 MapReduce下的數(shù)據(jù)挖掘綜述
在數(shù)據(jù)挖掘現(xiàn)有的常用算法中,主要分三類(lèi),分別為分類(lèi)與預(yù)測(cè)、聚類(lèi)分析和頻繁項(xiàng)挖掘。數(shù)據(jù)挖掘過(guò)程主要體現(xiàn)在數(shù)據(jù)的預(yù)處理、樣本的統(tǒng)計(jì)數(shù)據(jù)的計(jì)算以及概率學(xué)計(jì)算的使用,這些都可以簡(jiǎn)化為map函數(shù)的相關(guān)程序進(jìn)行并行化計(jì)算。
通過(guò)前文的相關(guān)描述,將數(shù)據(jù)挖掘任務(wù)部署到MapReduce框架下是可行的。在不對(duì)數(shù)據(jù)挖掘的應(yīng)用領(lǐng)域做要求的情況下,對(duì)于分類(lèi)與預(yù)測(cè)和聚類(lèi)的數(shù)據(jù)挖掘進(jìn)行MapReduce并行化運(yùn)算的方案進(jìn)行研究。
4.1 分類(lèi)與預(yù)測(cè)的并行化研究
該類(lèi)算法的思路是:(1)對(duì)預(yù)先獲取的大量樣本對(duì)象進(jìn)行學(xué)習(xí)運(yùn)算,獲得對(duì)數(shù)據(jù)分類(lèi)的分類(lèi)器;(2)運(yùn)用構(gòu)建的分類(lèi)器對(duì)目標(biāo)數(shù)據(jù)進(jìn)行分類(lèi)的判斷。在MapReduce框架中主要以離散方式對(duì)大數(shù)據(jù)對(duì)象進(jìn)行運(yùn)算操作的,運(yùn)算規(guī)模是具有很大彈性的。而針對(duì)像樸素貝葉斯分類(lèi)器的MapReduce實(shí)現(xiàn),需要做出相關(guān)的改進(jìn)。
訓(xùn)練階段:對(duì)于樣本的離散取值的統(tǒng)計(jì)工作可以并行化處理,包括對(duì)屬性的均值、標(biāo)準(zhǔn)差計(jì)算,都可以交給map函數(shù)來(lái)處理。進(jìn)而需要將統(tǒng)計(jì)結(jié)果(中間結(jié)果)進(jìn)行規(guī)約化處理,該項(xiàng)流程也能夠?qū)懭雛educe函數(shù)來(lái)實(shí)現(xiàn)。整合的結(jié)果并不能直接用作分類(lèi)器,因?yàn)槭艿讲⑿谢幚淼挠绊?,其表現(xiàn)仍是離散的,無(wú)法滿足貝葉斯分類(lèi)算法的連續(xù)性要求。此時(shí)需要將結(jié)果放到主處理函數(shù)中來(lái)進(jìn)行進(jìn)一步的連續(xù)性轉(zhuǎn)換,才可得出最終的分類(lèi)器。
預(yù)測(cè)階段:將數(shù)據(jù)樣本提取到Map任務(wù)中,完成對(duì)數(shù)據(jù)的計(jì)算及分類(lèi)處理,輸出的分類(lèi)中間結(jié)果交由Reduce任務(wù)來(lái)進(jìn)行最終分類(lèi)概率的統(tǒng)計(jì)。
圖3 訓(xùn)練階段流程示意圖
在預(yù)測(cè)過(guò)程處理時(shí),應(yīng)對(duì)數(shù)據(jù)樣本進(jìn)行規(guī)模判斷,如果較小,可以單一機(jī)器完成,則不需要其他操作;如果較大,便將分類(lèi)器模型分配到各個(gè)map節(jié)點(diǎn)中,按照主從模式來(lái)進(jìn)行分布式運(yùn)算來(lái)減少計(jì)算時(shí)間。
4.2 聚類(lèi)算法的并行化研究
聚類(lèi)算法目的是運(yùn)用分析方法對(duì)數(shù)據(jù)樣本進(jìn)行處理,將對(duì)象整體劃分為簇的單位,應(yīng)做到被分類(lèi)到同簇的數(shù)據(jù)對(duì)象應(yīng)是相似的,不同則不相似。重點(diǎn)是需要對(duì)數(shù)據(jù)樣本進(jìn)行維度特征的相似度計(jì)算(例如k-means的簇中對(duì)象的平均值,k-modes算法中需要求出不同維度下的眾數(shù)),并不斷進(jìn)行迭代直至結(jié)果穩(wěn)定。將聚類(lèi)算法在MapReduce框架下進(jìn)行并行化運(yùn)算的實(shí)現(xiàn)思路是:(1)Map任務(wù)階段,選取初輪的簇中心,分配到Map節(jié)點(diǎn)上,通過(guò)map函數(shù)計(jì)算每個(gè)數(shù)據(jù)樣本的聚類(lèi)中心距,通過(guò)目標(biāo)函數(shù)累加,獲取的每個(gè)簇的中心數(shù)據(jù)傳遞到Reduce節(jié)點(diǎn);(2)Reduce任務(wù)階段,接收Map節(jié)點(diǎn)的分類(lèi)數(shù)據(jù)進(jìn)行規(guī)約化計(jì)算,匯總計(jì)算目標(biāo)函數(shù)中的值,獲取并更新每個(gè)聚類(lèi)中心的數(shù)據(jù),并繼續(xù)傳遞給主函數(shù)進(jìn)行判斷;(3)主函數(shù)處理階段,判斷計(jì)算結(jié)果是否與上一輪沖突,如果兩輪結(jié)果不同則返回Map、Reduce任務(wù)繼續(xù)運(yùn)算,否則停止并輸出結(jié)果。
該類(lèi)算法的性能主要由需要進(jìn)行迭代運(yùn)算次數(shù)決定,通過(guò)將任務(wù)分配到分布式平臺(tái)上,可以顯著減少不必要的迭代操作,從而提升算法效率。如能獲得快速收斂的相似度計(jì)算函數(shù)方法,該算法計(jì)算速率仍能取得較大的增強(qiáng)。
5 研究展望
通過(guò)云計(jì)算方式去處理日益增長(zhǎng)的巨大規(guī)模的數(shù)據(jù)已經(jīng)成為時(shí)下的發(fā)展趨勢(shì),數(shù)據(jù)挖掘也同時(shí)獲得了數(shù)據(jù)分析業(yè)界的重點(diǎn)關(guān)注,通過(guò)前文描述的相關(guān)算法,可以看出該領(lǐng)域日趨成熟的特點(diǎn),多學(xué)科技術(shù)的應(yīng)用也使得其適用面愈加寬廣。
作為分布式系統(tǒng)的重要組成部分,MapReduce框架有著不可替代的地位,尤其在大數(shù)據(jù)處理需求逐年增長(zhǎng),并行化計(jì)算體現(xiàn)著顯著重要性的業(yè)界環(huán)境中,與其余并發(fā)模型相比較,該框架能夠提供較高的編程效率,并且能充分且高效地利用分布式系統(tǒng)各個(gè)計(jì)算節(jié)點(diǎn)的資源,都使得它能夠占據(jù)領(lǐng)先地位。同時(shí)提供了較完善的故障處理的解決機(jī)制,也是其成為容錯(cuò)性強(qiáng)的并行化模型的重要優(yōu)勢(shì)。
利用MapReduce框架來(lái)實(shí)現(xiàn)龐大計(jì)算的數(shù)據(jù)挖掘,能夠在如今對(duì)計(jì)算資源較為普遍但難以應(yīng)付巨型數(shù)據(jù)處理任務(wù)的現(xiàn)實(shí)中,取得空間、時(shí)間成本與計(jì)算開(kāi)銷(xiāo)較為理想的平衡。但在研究過(guò)程中,也發(fā)現(xiàn)仍有一些問(wèn)題需要在今后的工作中進(jìn)行改善:(1)MapReduce框架中的大量中間計(jì)算產(chǎn)生的臨時(shí)讀寫(xiě)文件可能承載了數(shù)據(jù)挖掘運(yùn)算中的重要數(shù)據(jù),如何能夠在進(jìn)一步的迭代過(guò)程中加以利用和回溯仍是需要思考的問(wèn)題;(2)許多數(shù)據(jù)挖掘算法涉及到機(jī)器學(xué)習(xí)方法,某些監(jiān)督型算法如何有效地在map過(guò)程中進(jìn)行仍將需要投入精力去研究。
參考文獻(xiàn)
[1] 周曉峰,王志堅(jiān).分布式計(jì)算技術(shù)綜述[J].計(jì)算機(jī)時(shí)代,2004,(12).
[2] Dean J,Ghemawat S.MapReduce:Simplified Data Processing on Large Clusters[A].Conference on Symposium on Opearting Systems Design&Implementation[C].2004.
[3] 李銳,王斌.文本處理中的MapReduce技術(shù)[J].中文信息學(xué)報(bào),2012,26(4).
[4] 亓開(kāi)元,韓燕波,趙卓峰,等.支持高并發(fā)數(shù)據(jù)流處理的MapReduce中間結(jié)果緩存[J].計(jì)算機(jī)研究與發(fā)展,2013,50(1).
[5] 吳昊,倪志偉,王會(huì)穎.基于MapReduce的蟻群算法[J].計(jì)算機(jī)集成制造系統(tǒng),2012,18(7).
[6] 徐寶文,張衛(wèi)豐.數(shù)據(jù)挖掘技術(shù)在Web預(yù)取中的應(yīng)用研究[J].計(jì)算機(jī)學(xué)報(bào),2001,24(4).
[7] 高能,馮登國(guó),向繼.一種基于數(shù)據(jù)挖掘的拒絕服務(wù)攻擊檢測(cè)技術(shù)[J].計(jì)算機(jī)學(xué)報(bào),2006,29(6).
[8] 劉蓉,陳曉紅.基于數(shù)據(jù)挖掘的移動(dòng)通信客戶消費(fèi)行為分析[J].計(jì)算機(jī)應(yīng)用與軟件,2006,23(2).
[9] Romero C,Ventura S.Data mining in education[J].Wiley Interdisciplinary Reviews Data Mining&Knowledge Discovery,2013,3(1).
[10] 李成華,張新訪,金海,等.MapReduce:新型的分布式并行計(jì)算編程模型[J].計(jì)算機(jī)工程與科學(xué),2011,33(3).
[11] 李建江,崔健,王聃,等.MapReduce并行編程模型研究綜述[J].電子學(xué)報(bào),2011,39(11).
[12] 蔣良孝.樸素貝葉斯分類(lèi)器及其改進(jìn)算法研究[D].中國(guó)地質(zhì)大學(xué),2009.
[13] Han J,Kamber M.Data Mining:Concepts and Techniques,Morgan Kaufmann[J].Machine Press,2006,5(4).
(責(zé)任編輯:黃銀芳)