(深圳博十強(qiáng)志科技有限公司,廣東 深圳 518000)
信息時(shí)代背景下,云計(jì)算、物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,各類數(shù)據(jù)信息急劇增長(zhǎng),怎樣才能夠?qū)⒑A康臄?shù)據(jù)信息轉(zhuǎn)變?yōu)橛行У馁Y源,是大數(shù)據(jù)技術(shù)研究的要點(diǎn)。通過大數(shù)據(jù)技術(shù)來(lái)挖掘海量數(shù)據(jù)存在的內(nèi)在規(guī)律,確定有價(jià)值的信息數(shù)據(jù)并予以利用,可以打開全新的思維與認(rèn)知角度,這對(duì)于社會(huì)經(jīng)濟(jì)的發(fā)展意義重大。Spark平臺(tái)作為針對(duì)大數(shù)據(jù)集合的低延遲集群分布式計(jì)算系統(tǒng),可以為大數(shù)據(jù)挖掘效率的提升提供更多支持。
數(shù)據(jù)挖掘技術(shù)現(xiàn)在已經(jīng)得到了廣泛應(yīng)用,可以利用算法來(lái)挖掘出海量數(shù)據(jù)內(nèi)存在的有價(jià)值的信息以及有趣模式??梢苑譃?個(gè)階段:(1)數(shù)據(jù)的預(yù)處理。轉(zhuǎn)化采集到的所有原始數(shù)據(jù),確保其在經(jīng)過處理后可以符合項(xiàng)目需求,轉(zhuǎn)變成有效數(shù)。該步驟可以彌補(bǔ)原始數(shù)據(jù)存在的缺陷,提高數(shù)據(jù)的完整性與可靠性[1]。數(shù)據(jù)抽取操作比較簡(jiǎn)單,可通過較快的速度從大量的數(shù)據(jù)信息內(nèi)獲得有價(jià)值的數(shù)據(jù)。(2)數(shù)據(jù)的挖掘。首先要確定數(shù)據(jù)倉(cāng)庫(kù)內(nèi)各類數(shù)據(jù)的普遍特征,并根據(jù)此確定對(duì)應(yīng)的算法工具,實(shí)現(xiàn)對(duì)目標(biāo)數(shù)據(jù)的進(jìn)一步處理。該階段為數(shù)據(jù)挖掘技術(shù)的核心,為達(dá)到最終目的,關(guān)鍵是要保證所選挖掘算法的適用性。(3)知識(shí)表示與模式評(píng)估。模式主要是完成數(shù)據(jù)挖掘成果的有效表達(dá),最終構(gòu)建出有識(shí)別能力的完整表達(dá)模式。
2.1.1 Spark Runtime
對(duì)Spark Runtime分析時(shí),首先要確定其功能性,例如任務(wù)調(diào)度與內(nèi)存管理等。在利用RDD結(jié)構(gòu)來(lái)進(jìn)行Spark內(nèi)部的數(shù)據(jù)傳輸時(shí),前提是要確定Spark核心邏輯數(shù)據(jù)信息,在部分條件下其會(huì)與對(duì)象概念有著一定的相似性。第一步想要對(duì)全部數(shù)據(jù)進(jìn)行多個(gè)子集的劃分,同時(shí)要求每個(gè)子集全部能夠傳輸?shù)郊簝?nèi)任意的節(jié)點(diǎn)做進(jìn)一步的處理。第二步是對(duì)計(jì)算中間結(jié)果提供可靠保護(hù),通過此來(lái)獲取與計(jì)算結(jié)果相同,同時(shí)在子集節(jié)點(diǎn)進(jìn)行備份存放的文件內(nèi)容[2]。第三步則是在任意數(shù)據(jù)子集計(jì)算錯(cuò)誤的情況下,其余子集全部要做再一次的整理,滿足容錯(cuò)機(jī)制。
2.1.2 Graph X
Graph X為Spark的關(guān)鍵子項(xiàng)目,在Spark基礎(chǔ)上進(jìn)行構(gòu)建,基于大規(guī)模圖計(jì)算,通過Graph X衍生特征支持,可實(shí)現(xiàn)Spark生態(tài)系統(tǒng)對(duì)于大圖數(shù)據(jù)處理時(shí)的豐富計(jì)算。以及在于其他相關(guān)組件進(jìn)行系統(tǒng)融合時(shí),在強(qiáng)大數(shù)據(jù)處理能力的支持下,便能夠確保所有應(yīng)用全可通過多項(xiàng)場(chǎng)景來(lái)獲取。對(duì)Graph X功能性進(jìn)行分析,可確定其能夠提供豐富的圖數(shù)據(jù)操作符,例如核心與優(yōu)化操作符等[3]。并且,Graph X還可以滿足多個(gè)分布集群的圖運(yùn)算,以及具備充足的API接口,尤其是在達(dá)到一定圖規(guī)模的情況下,可進(jìn)行精益化算法,推動(dòng)分布式圖集的大規(guī)模處理。作為Spark的重要部分,Graph X的關(guān)鍵就是可進(jìn)一步提高數(shù)據(jù)吸收與規(guī)模。
2.1.3 Spark Streaming
SPark系統(tǒng)除了具有良好的擴(kuò)展Spark數(shù)據(jù)能力,還可以做到嚴(yán)格按照時(shí)間方式進(jìn)行Spark Streaming數(shù)據(jù)流的分割,最終構(gòu)成RDD,利用比較小的時(shí)間間隔來(lái)處理流式數(shù)據(jù),會(huì)在一定程度上受到處理延時(shí)影響,所以可以將其看做是準(zhǔn)時(shí)處理系統(tǒng)[4]。并且,Spark Streaming具有非常強(qiáng)的容錯(cuò)性,包括錯(cuò)誤處理以及恢復(fù)等方面均具備較大的優(yōu)勢(shì)。以及Spark Streaming還可無(wú)縫對(duì)接相關(guān)Spark生態(tài)模塊,除了共同完成流數(shù)據(jù)以外,對(duì)于部分復(fù)雜現(xiàn)象也可以做到有效處理。
2.2.1 硬件系統(tǒng)
為達(dá)到優(yōu)良的兼容性與運(yùn)行性效果,就需要采用Linux操作系統(tǒng)來(lái)構(gòu)建Spark分布式集群。安排1臺(tái)主機(jī)的3臺(tái)虛擬機(jī)進(jìn)行環(huán)境測(cè)試,并完成Spark分布式集群的構(gòu)建,其中分為2個(gè)Worker節(jié)點(diǎn)與1個(gè)Master節(jié)點(diǎn),各節(jié)點(diǎn)分別負(fù)責(zé)不同的功能。例如Master節(jié)點(diǎn)對(duì)應(yīng)功能是見單機(jī)編寫,同時(shí)調(diào)節(jié)Spark分布式應(yīng)用程序,因此需要較高的配置。一般來(lái)講Master節(jié)點(diǎn)對(duì)應(yīng)的是4G內(nèi)存與四核處理器,而Worker節(jié)點(diǎn)對(duì)應(yīng)的配置則多為2G內(nèi)存與二核處理器。另外,為保證各個(gè)節(jié)點(diǎn)功能的有效體現(xiàn),全部使用的是以PCIE為基礎(chǔ)的SSD固態(tài)硬盤,在保證讀寫效率達(dá)標(biāo)的情況下,還能夠進(jìn)一步做到高效率、高質(zhì)量運(yùn)行。通過對(duì)集群構(gòu)建的管理,能夠以更少的運(yùn)行成本,來(lái)達(dá)到較高的運(yùn)行速度與工作質(zhì)量,并且還能夠根據(jù)實(shí)際需求來(lái)靈活的調(diào)整節(jié)點(diǎn)數(shù)量。
2.2.2 分布式Spark集群
先完成Scala語(yǔ)言的安裝,對(duì)每臺(tái)虛擬機(jī)的slaves文件內(nèi)容進(jìn)行修改,修改后要全部為見集群中Worker節(jié)點(diǎn)主機(jī)名,然后要進(jìn)一步完成節(jié)點(diǎn)Spark安裝目錄Spark-env.sh文件的修改。配置系統(tǒng)的jdk環(huán)境變量,對(duì)系統(tǒng)Scala安裝路徑進(jìn)行修改,確定為Scala-Home[5]。另外,要注意集群內(nèi)各節(jié)點(diǎn)對(duì)應(yīng)的Spark-env.sh文件必須要核對(duì)確認(rèn)其與Slaves文件內(nèi)容相同,并且在完成所有配置后,可直接運(yùn)行jps命令查看集群?jiǎn)?dòng)情況。
2.2.3 Spaek的IDE開發(fā)環(huán)境
Scala語(yǔ)言所應(yīng)用的開發(fā)環(huán)境是IDEA,這樣便可以選擇IDEA為Spark應(yīng)用程序編程與開發(fā)環(huán)境。其中,需要注意IDEA使用過程中所產(chǎn)生的大量緩存文件,可以通過應(yīng)用SSD固態(tài)硬盤實(shí)現(xiàn)文件存儲(chǔ),因此來(lái)減少對(duì)空間的占用量,同時(shí)降低I/O資源的消耗量,為系統(tǒng)的穩(wěn)定運(yùn)行提供有利條件。待IDEA配置完成后,便可對(duì)Spark程序做下一步的測(cè)試。
Apriori算法是以挖掘關(guān)聯(lián)規(guī)則為基礎(chǔ)的一種頻繁項(xiàng)集算法,能夠反復(fù)掃描交易數(shù)據(jù)庫(kù)信息,然后基于候選頻繁集生成最終的頻繁集。其中定義最小支持度為算法的核心流程,對(duì)所有的頻繁項(xiàng)集進(jìn)行選擇,然后按照置信度實(shí)現(xiàn)關(guān)聯(lián)規(guī)則的生成。基于Spark平臺(tái)Apriori算法分布式實(shí)現(xiàn),可以分為兩個(gè)步驟來(lái)實(shí)現(xiàn):第一步,產(chǎn)生頻繁項(xiàng)集,所有事務(wù)集全部根據(jù)RDD
對(duì)計(jì)算算法流程進(jìn)行分析,可確定其具有較高的復(fù)雜性,在進(jìn)行迭代計(jì)算時(shí),全部計(jì)算均需要放入磁盤中等待任務(wù)的啟動(dòng)與處理,整個(gè)過程需要消耗大量CPU。基于Spark平臺(tái)可在內(nèi)存內(nèi)直接完成部分的工作處理,相應(yīng)的迭代部分計(jì)算任務(wù)會(huì)直接轉(zhuǎn)存在內(nèi)存中,以此便可以進(jìn)一步提高迭代計(jì)算的計(jì)算效率,并且在部分必要的條件下,還能夠?qū)崿F(xiàn)磁盤與網(wǎng)絡(luò)的運(yùn)作??偨Y(jié)來(lái)講,在迭代計(jì)算中Spark具有更加明顯的優(yōu)勢(shì),其能夠作為分布式機(jī)器學(xué)習(xí)平臺(tái)存在。
協(xié)同過濾算法的應(yīng)用,先是要選擇確定一個(gè)靠譜的想法,隨后便可向用戶提供該想法。算法的步驟可分為以下流程:(1)系統(tǒng)過濾。篩選存在共同興趣的用戶,然后以喜好對(duì)物品進(jìn)行選擇和分類,并將其構(gòu)成新的集合或序列。在此過程中可定義用戶為鄰居,同時(shí)要對(duì)相應(yīng)用戶進(jìn)行針對(duì)性組織與利用,確定最有效的執(zhí)行方法。(2)協(xié)同過濾。依次完成用戶喜好收集、用戶使用物品相似性分析以及基于計(jì)算結(jié)果推薦各步驟,其中用戶喜好整合是影響最終推薦針對(duì)性的核心要素。首先要選擇一種用戶系統(tǒng),然后根據(jù)用戶行為來(lái)進(jìn)行分組,對(duì)數(shù)據(jù)行為進(jìn)行可靠收集,然后做進(jìn)一步的數(shù)據(jù)預(yù)處理,通過用戶喜好向其推薦可能會(huì)喜歡的物品。
基于Spark平臺(tái)的分布式Apriori算法有效的彌補(bǔ)了其他算法的缺陷,在大數(shù)據(jù)關(guān)聯(lián)分析中應(yīng)用優(yōu)勢(shì)明顯,并且有機(jī)結(jié)合Spark與MLlib制定分布式協(xié)同過濾推薦在分布式集群中的運(yùn)行方案,在大量推薦系統(tǒng)的應(yīng)用中效果顯著,值得進(jìn)一步的研究分析。