張友海,李鋒剛(1.安徽職業(yè)技術(shù)學(xué)院 信息工程系,安徽 合肥 230011;2.合肥工業(yè)大學(xué) 管理學(xué)院,安徽 合肥 230009)
?
基于Hadoop的并行化聚類(lèi)系統(tǒng)的設(shè)計(jì)
張友海,李鋒剛
(1.安徽職業(yè)技術(shù)學(xué)院 信息工程系,安徽 合肥 230011;2.合肥工業(yè)大學(xué) 管理學(xué)院,安徽 合肥 230009)
摘 要:數(shù)據(jù)挖掘技術(shù)可以找出大量數(shù)據(jù)中的隱含的價(jià)值并對(duì)數(shù)據(jù)做作出預(yù)測(cè).聚類(lèi)分析是挖掘數(shù)據(jù)價(jià)值的重要手段之一,在識(shí)別數(shù)據(jù)的內(nèi)在相似性具有極其重要的作用.近些年來(lái),隨著互聯(lián)網(wǎng)技術(shù)的飛躍式發(fā)展,各行各業(yè)產(chǎn)生的數(shù)據(jù)以爆炸式的增長(zhǎng).面對(duì)如此龐大的數(shù)據(jù)量,傳統(tǒng)的數(shù)據(jù)挖掘處理方式已經(jīng)無(wú)法勝任,而以Hadoop生態(tài)圈為代表的大數(shù)據(jù)處理方法,提供了成熟且易用的工具技術(shù)支撐.因此,基于Hadoop相關(guān)工具來(lái)設(shè)計(jì)一種并行化聚類(lèi)系統(tǒng)具有非常重要的意義.
關(guān)鍵詞:數(shù)據(jù)挖掘;聚類(lèi)分析;hadoop
互聯(lián)網(wǎng)的普及和各種互聯(lián)網(wǎng)技術(shù)的快速應(yīng)用,導(dǎo)致大量數(shù)據(jù),充斥在人們生產(chǎn)和生活中.如何有效地從這些繁復(fù)復(fù)雜的數(shù)據(jù)中提取有價(jià)值的隱含信息意義重大.所謂聚類(lèi)分析就是將包含有大量數(shù)據(jù)對(duì)象的數(shù)據(jù)集合劃分為若干個(gè)類(lèi)或者是簇,使得同一類(lèi)或者簇中的對(duì)象彼此具有較高的相似度,而不同的類(lèi)或者簇中的對(duì)象之間的相異度則比較大.聚類(lèi)算法不同于其他的數(shù)據(jù)挖掘算法,它不依賴(lài)于預(yù)先已經(jīng)定義好的簇或者類(lèi)的特征.在數(shù)據(jù)挖掘領(lǐng)域,學(xué)術(shù)界提出了若干的基于不同思想的聚類(lèi)算法,其中應(yīng)用最為廣泛且思想較為簡(jiǎn)便的是基于劃分的聚類(lèi)算法.如何采用快速有效的聚類(lèi)算法對(duì)海量的數(shù)據(jù)進(jìn)行有效處理十分迫切,分布式技術(shù)的應(yīng)用為海量數(shù)據(jù)的處理提供了新的機(jī)遇.云計(jì)算是分布式發(fā)展的重要方向,它利用互聯(lián)網(wǎng),使用多臺(tái)計(jì)算機(jī)進(jìn)行分布式協(xié)同處理,共享各種信息以及軟硬件資源,為用戶(hù)提供分布式的信息服務(wù).目前,Hadoop作為一種有效手段,被廣泛應(yīng)用于數(shù)據(jù)挖掘領(lǐng)域.Hadoop是一個(gè)開(kāi)源的分布式云計(jì)算平臺(tái),能夠?qū)崿F(xiàn)對(duì)大量的數(shù)據(jù)集高效、可靠、可伸縮的分布式處理.它是一個(gè)軟件框架,由底部的分布式文件系統(tǒng)(Hadoop Distributed File System,簡(jiǎn)稱(chēng)HDFS)和上層的MapReduce編程模式構(gòu)成,它們是Hadoop的核心.HDFS用于存儲(chǔ)Hadoop集群中的所有存儲(chǔ)節(jié)點(diǎn)上面的文件,而MapReduce編程模式是將已有單機(jī)算法實(shí)現(xiàn)分布式的關(guān)鍵,通過(guò)實(shí)現(xiàn)MapReduce編程模式,我們就可以方便的把已有的算法移植到Hadoop平臺(tái)實(shí)現(xiàn)算法的并行化.然而,在實(shí)際項(xiàng)目中,除了研究聚類(lèi)算法外,還針對(duì)具體的應(yīng)用需求來(lái)改善現(xiàn)有的聚類(lèi)算法,并在Hadoop平臺(tái)上進(jìn)行分布式實(shí)現(xiàn).這也是系統(tǒng)設(shè)計(jì)完成后的終極目標(biāo).
2.1 功能性需求
本系統(tǒng)處理對(duì)象主要是以CSV的大容量文本文件,系統(tǒng)需要選取合適的存儲(chǔ)方式存儲(chǔ)這些大文件.另外系統(tǒng)需要提供合適的導(dǎo)入導(dǎo)出工具,實(shí)現(xiàn)預(yù)處理文件的導(dǎo)入和結(jié)果文件的導(dǎo)出,然后對(duì)數(shù)據(jù)進(jìn)行預(yù)處理操作.用戶(hù)可以選擇分類(lèi)算法對(duì)數(shù)據(jù)進(jìn)行模型訓(xùn)練,可以利用測(cè)試集對(duì)分類(lèi)效果進(jìn)行評(píng)估.另外,聚類(lèi)也是系統(tǒng)的一個(gè)重要功能,用戶(hù)可以選擇系統(tǒng)提供的并行化聚類(lèi)算法對(duì)數(shù)據(jù)進(jìn)行聚類(lèi),并對(duì)聚類(lèi)效果進(jìn)行評(píng)測(cè).另外,系統(tǒng)提供數(shù)據(jù)導(dǎo)出工具,用于將結(jié)果數(shù)據(jù)導(dǎo)出系統(tǒng).系統(tǒng)功能可以分為數(shù)據(jù)管理,數(shù)據(jù)預(yù)處理,并行化分類(lèi),并行化聚類(lèi)4個(gè)部分.
數(shù)據(jù)管理:如何存儲(chǔ)單機(jī)無(wú)法存儲(chǔ)的數(shù)據(jù)是大數(shù)據(jù)處理系統(tǒng)需要解決的問(wèn)題.另外如何保證在少數(shù)節(jié)點(diǎn)宕機(jī)的情況下數(shù)據(jù)不丟失也是本系統(tǒng)需要解決的問(wèn)題.大數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)導(dǎo)入導(dǎo)出是數(shù)據(jù)處理系統(tǒng)的必要模塊,對(duì)于大數(shù)據(jù)系統(tǒng)高效地將待處理數(shù)據(jù)上傳到數(shù)據(jù)處理系統(tǒng)以及將結(jié)果數(shù)據(jù)下載或備份到其他系統(tǒng)都是需要完成的功能.
數(shù)據(jù)預(yù)處理:需要實(shí)現(xiàn)在分類(lèi)和聚類(lèi)前使用數(shù)據(jù)變換和數(shù)據(jù)清理,以提高數(shù)據(jù)的質(zhì)量,分類(lèi)和聚類(lèi)的效果,同時(shí)也要提高分類(lèi)和聚類(lèi)的效率,以減少數(shù)據(jù)處理時(shí)間.
分類(lèi)和聚類(lèi):需要以并行化方式實(shí)現(xiàn)自動(dòng)化分類(lèi)系統(tǒng)和聚類(lèi)系統(tǒng).提高分類(lèi)和聚類(lèi)的效率.并可以動(dòng)態(tài)擴(kuò)張,以適應(yīng)數(shù)據(jù)量的膨脹.
集群管理:由于大數(shù)據(jù)系統(tǒng)的特點(diǎn)就是集群規(guī)模龐大,如果完全依賴(lài)人工運(yùn)維的話,將不堪重負(fù),而且也不切實(shí)際.系統(tǒng)也需要提供自動(dòng)化運(yùn)維工具以實(shí)現(xiàn)自動(dòng)化安裝,自動(dòng)化配置軟件,并提供告警和監(jiān)控功能
2.2 非功能性需求
可擴(kuò)展性:系統(tǒng)在現(xiàn)實(shí)使用過(guò)程中可能出現(xiàn)用戶(hù)數(shù)量快速增長(zhǎng)現(xiàn)象,這就要求系統(tǒng)有動(dòng)態(tài)擴(kuò)展的能力,以適應(yīng)帶來(lái)的系統(tǒng)負(fù)載量的增加,系統(tǒng)功能的擴(kuò)展也要容易實(shí)現(xiàn).
可維護(hù)性:可維護(hù)性是指系統(tǒng)管理員能夠方便地進(jìn)行系統(tǒng)維護(hù),在系統(tǒng)發(fā)生錯(cuò)誤或者崩潰時(shí),能夠很快地定位到問(wèn)題所處位置.因此系統(tǒng)在投入使用后,需要提供帶寬、磁盤(pán)、CPU、內(nèi)存等性能指標(biāo)實(shí)時(shí)監(jiān)控工具.另外系統(tǒng)還應(yīng)該有詳細(xì)的日志輸出,這些日志包括系統(tǒng)運(yùn)行日志和系統(tǒng)錯(cuò)誤日志.系統(tǒng)運(yùn)行日志主要記錄用戶(hù)登錄、退出和重要數(shù)據(jù)變更等反映系統(tǒng)運(yùn)行狀況變化的信息;這些信息主要用于管理員對(duì)系統(tǒng)使用情況進(jìn)行跟蹤.系統(tǒng)錯(cuò)誤日志包括系統(tǒng)的錯(cuò)誤、警告信息等;這些信息主要用來(lái)提供給技術(shù)人員對(duì)系統(tǒng)的錯(cuò)誤原因進(jìn)行分析.系統(tǒng)需要提供方便的日志管理程序,以方便查詢(xún)、刪除系統(tǒng)日志.
精確性:系統(tǒng)的分類(lèi)效果需要達(dá)到一個(gè)理想的值.如召回率和準(zhǔn)確性都有一個(gè)較高的值.
高效性:系統(tǒng)需要在特定數(shù)據(jù)量情況下能夠處理完成.
系統(tǒng)的總體架構(gòu)如圖1所示,其中基礎(chǔ)設(shè)施層保證了網(wǎng)絡(luò),存儲(chǔ),以及運(yùn)算的基本能力.在基礎(chǔ)設(shè)施層之上部署基于hdfs的分布式文件存儲(chǔ)系統(tǒng),以提供大文件的存儲(chǔ)能力和存儲(chǔ)可靠性.另外在基礎(chǔ)設(shè)施之上同時(shí)還會(huì)構(gòu)建MapReduce計(jì)算框架,以提供分布式處理能力.數(shù)據(jù)管理構(gòu)建在分布式文件存儲(chǔ)hdfs之上,實(shí)現(xiàn)用戶(hù)數(shù)據(jù)高效導(dǎo)入和結(jié)果文件的高效導(dǎo)出.本系統(tǒng)將通過(guò)MapReduce編程框架實(shí)現(xiàn)數(shù)據(jù)的預(yù)處理功能,并行化分類(lèi)以及并行化聚類(lèi)功能.最后系統(tǒng)接口提供用戶(hù)可以通過(guò)WEB頁(yè)面方式使用本系統(tǒng).
圖1 系統(tǒng)總體結(jié)構(gòu)
圖2 系統(tǒng)的運(yùn)行流程
本系統(tǒng)的使用流程如圖2所示,用戶(hù)實(shí)現(xiàn)導(dǎo)入數(shù)據(jù)到分布式文件存儲(chǔ)系統(tǒng)hdfs,通過(guò)數(shù)據(jù)預(yù)處理模塊運(yùn)行預(yù)處理.用戶(hù)可以安裝需要選擇分類(lèi)還是聚類(lèi).用戶(hù)如果需要進(jìn)行分類(lèi)預(yù)測(cè),用戶(hù)可以選擇對(duì)數(shù)據(jù)進(jìn)行劃分,劃分為數(shù)據(jù)集和測(cè)試集,然后對(duì)通過(guò)分類(lèi)模型進(jìn)行分類(lèi).分類(lèi)完成后會(huì)對(duì)分類(lèi)效果進(jìn)行評(píng)估.最后用戶(hù)可以將分類(lèi)結(jié)果導(dǎo)出.如果用戶(hù)需要對(duì)數(shù)據(jù)進(jìn)行聚類(lèi),用戶(hù)可以選擇聚類(lèi)模型對(duì)預(yù)處理后的文件進(jìn)行聚類(lèi),然后對(duì)結(jié)果進(jìn)行評(píng)估,最后用戶(hù)可以將結(jié)果數(shù)據(jù)導(dǎo)出.系統(tǒng)主要涉及5個(gè)功能模塊,分別是:數(shù)據(jù)管理,數(shù)據(jù)預(yù)處理,并行化分類(lèi),和并行化聚類(lèi),集群運(yùn)維.
3.1 集群運(yùn)維子系統(tǒng)
大數(shù)據(jù)運(yùn)維子系統(tǒng)將依托開(kāi)源集群運(yùn)維工具Ambari進(jìn)行集群管理,采用主從式架構(gòu),主節(jié)點(diǎn)進(jìn)行管理,從節(jié)點(diǎn)執(zhí)行節(jié)點(diǎn)組件添加刪除,組件配置,運(yùn)維消息采集等等工作.
3.2 大數(shù)據(jù)存儲(chǔ)系統(tǒng)
存儲(chǔ)系統(tǒng)將采用hdfs和hbase作為底層存儲(chǔ)系統(tǒng),使用hdfs存儲(chǔ)文件,有hbase存儲(chǔ)需要實(shí)時(shí)查詢(xún)的信息.本系統(tǒng)實(shí)現(xiàn)用戶(hù)可以通過(guò)多種方式將文件導(dǎo)入到存儲(chǔ)系統(tǒng)中.提供ftp方式將本地文件導(dǎo)入到存儲(chǔ).也支持通過(guò)頁(yè)面上傳小文件到存儲(chǔ)系統(tǒng),另外支持,將關(guān)系數(shù)據(jù)表導(dǎo)入到存儲(chǔ)系統(tǒng)或者將結(jié)果導(dǎo)入到關(guān)系數(shù)據(jù)庫(kù)中.
3.3 數(shù)據(jù)預(yù)處理模塊
該子系統(tǒng)將包括數(shù)據(jù)預(yù)處理模塊和數(shù)據(jù)分類(lèi)挖掘模塊.預(yù)處理模塊將為用戶(hù)提供MR,hive,pig等多種方式進(jìn)行數(shù)據(jù)預(yù)處理.用戶(hù)可以編寫(xiě)簡(jiǎn)單的sql腳本,或pig腳本進(jìn)行數(shù)據(jù)處理.對(duì)于復(fù)雜的問(wèn)題可以是使用MapReduce進(jìn)行處理.
3.4 并行化分類(lèi)模塊
本模塊將提供基于MapReduce的kMeans聚類(lèi)算法的并行化實(shí)現(xiàn).提供基于pig,hive的模型評(píng)估功能對(duì)聚類(lèi)效果進(jìn)行評(píng)估.并提供基于Pig,Hive的模型評(píng)估功能,實(shí)現(xiàn)對(duì)數(shù)據(jù)分類(lèi)效果的評(píng)估.充分發(fā)揮MapReduce并行化計(jì)算的優(yōu)勢(shì),提高分類(lèi)效率.
總的來(lái)說(shuō),基于Hadoop的并行化聚類(lèi)分析系統(tǒng)的設(shè)計(jì)是一個(gè)比較復(fù)雜的過(guò)程,這里只是簡(jiǎn)要分析了系統(tǒng)的需求,并對(duì)系統(tǒng)進(jìn)行了總體設(shè)計(jì),對(duì)系統(tǒng)架構(gòu)和系統(tǒng)基本流程作了描述以及對(duì)系統(tǒng)的各個(gè)模塊做了簡(jiǎn)要設(shè)計(jì).如果需要實(shí)現(xiàn)該系統(tǒng)功能還需要進(jìn)行具體的編程實(shí)現(xiàn).
參考文獻(xiàn):
〔1〕【美】陳封能,【美】斯坦巴赫,【美】庫(kù)瑪爾.數(shù)據(jù)挖掘?qū)д摚ㄍ暾妫跰].人民郵電出版社,2011.305-347.
〔2〕王駿,王士同,鄧趙紅.聚類(lèi)分析研究中的若干問(wèn)題[J].控制與決策,2012(03):321-328.
〔3〕喻云峰.數(shù)據(jù)挖掘算法的分析與研究[J].科技廣場(chǎng),2010 (9):54-56.
〔4〕解二虎.數(shù)據(jù)挖掘中數(shù)據(jù)預(yù)處理關(guān)鍵技術(shù)研究[J].科技通報(bào),2013(12):211-213.
〔5〕吳昉,宋培義.數(shù)據(jù)挖掘的應(yīng)用[J].貴州科學(xué),2012,30(3):54-56.
〔6〕周瑩.數(shù)據(jù)挖掘聚類(lèi)算法研究及實(shí)現(xiàn)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2013(9):32~34.
中圖分類(lèi)號(hào):TP311.13
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1673-260X(2016)05-0015-02
收稿日期:2016-03-18
基金項(xiàng)目:國(guó)家自然科學(xué)青年基金項(xiàng)目資助(71301041)
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2016年9期