亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spark平臺的大數(shù)據(jù)挖掘技術研究

        2017-06-27 08:14:22王珣
        微型電腦應用 2017年6期
        關鍵詞:項集單機數(shù)據(jù)挖掘

        王珣

        (陜西學前師范學院 教學設備與實驗室管理處, 西安 710061)

        基于Spark平臺的大數(shù)據(jù)挖掘技術研究

        王珣

        (陜西學前師范學院 教學設備與實驗室管理處, 西安 710061)

        大數(shù)據(jù)具備數(shù)據(jù)量大、富于多樣性的特點。因此在大數(shù)據(jù)分析方面,無論是對處理速度還是實時性都具有較高的要求。數(shù)據(jù)挖掘技術是從海量數(shù)據(jù)里采用某種建模算法,用來尋找隱藏在數(shù)據(jù)背后的信息,從而讓大數(shù)據(jù)產生更大的價值。Spark框架是一個針對超大數(shù)據(jù)集合的低延遲的集群分布式計算系統(tǒng)。本文基于該框架,對大數(shù)據(jù)挖掘技術進行了具體研究,首先完成了基于Yarn部署上Spark集群搭建,然后提出并實現(xiàn)了并行Apriori算法,該算法成功補充了Spark MLlib分布式機器學習庫中所缺乏的關聯(lián)分析問題的分布式算法。

        大數(shù)據(jù); 數(shù)據(jù)挖掘; Spark

        0 引言

        如今我國已進入大數(shù)據(jù)時代,每年都會產生海量的數(shù)據(jù)。預計到2020年,我們每年產生的數(shù)據(jù)總量將超過8.5ZB[1],涉及到金融,互聯(lián)網,醫(yī)療等各個領域,這必然對大數(shù)據(jù)的挖掘和分析提出了更嚴峻的挑戰(zhàn)。因此,在大數(shù)據(jù)時代,要進行各行各業(yè)、各種應用場景的天量數(shù)據(jù)挖掘,必然需要一個效率高、結果準確的計算平臺來進行處理。

        Spark由加州大學伯克利分校的AMP實驗室出品,它是一個開源的計算框架,該框架可用于處理大數(shù)據(jù)的高性能分布式并行計算。Spark的主要優(yōu)點在于:支持Python、Java等多語言編程,使用方便;可在大數(shù)據(jù)集上進行多種復雜查詢;兼容性強,可以兼容Yarn,Mesos等多個框架;處理快速且結果精確。目前,Spark已經被應用或將要被應用到國內外很多公司的各類應用場景中。MLlib,作為Spark平臺中的分布式機器學習庫,承擔著對機器學習算法實現(xiàn)的功能。它在經歷過歷次擴充改進后,正逐步完善。然而,在數(shù)據(jù)挖掘和分布式機器學習方面,傳統(tǒng)的Spark MLlib庫仍有一些缺陷,欠缺關于關聯(lián)分析這類的算法內容,這給在需要應用關聯(lián)分析處理眾多應用場景的大數(shù)據(jù)時帶來諸多不便,因此,我們有必要對相應的算法進行改進、擴充和定制,使其能夠更加適用于數(shù)據(jù)挖掘和分布式機器學習技術。

        1 Spark開發(fā)環(huán)境及其分布式集群構建

        一般來講,Spark是采用集群模式應用于實際生產場景中的,因此構建好Spark分布式集群是基于Spark進行大數(shù)據(jù)挖掘技術的研究與實現(xiàn)的關鍵。Spark開發(fā)環(huán)境及其分布式集群的構建,主要包括以下幾個方面:

        1.1 硬件系統(tǒng)要求

        為了保證良好的運行性和兼容性,所有構建Spark分布式集群所用的物理主機均采用Linux 操作系統(tǒng)。本文采用的測試環(huán)境,由搭建在1臺主機上的3臺虛擬機組成。在此基礎上搭建Spark分布式集群,包括2個Worker節(jié)點和1個Master節(jié)點。Master節(jié)點作為單機編寫和調試Spark分布式應用程序的機器,配置必須高于Worker節(jié)點。Master節(jié)點的機器配置為4G內存和4核處理器,Worker節(jié)點機器配置為2G內存和2核處理器。各節(jié)點硬盤為基于PCIE[2]的SSD固態(tài)硬盤,這種硬盤讀寫速度快,可以有效提高工作及運行效率。上述集群構成形式,既可以減少Spark集群運行成本,降低環(huán)境構建失敗概率,又可以根據(jù)需要隨時對節(jié)點數(shù)量進行增減。

        1.2 構造分布式Spark集群

        本文選取Spark版本為Spark1.1。此版本下構造分布式Spark集群,首先需要安裝Scala語言,然后將每臺虛擬機上的slaves文件內容修改為集群上每個Worker節(jié)點的主機名,并修改集群每個節(jié)點的Spark安裝目錄下的Spark-env.sh文件;接著配置系統(tǒng)的jdk環(huán)境變量,修改系統(tǒng)Scala的安裝路徑為SCALA_HOME;集群中Master節(jié)點的主機名或IP地址采用SPARK_MASTER_IP的屬性值,其他項默認;最后,確保該集群中的所有節(jié)點的Spark-evn.sh文件和slaves文件的內容完全相同。以上配置完成后便可通過jps命令查看集群的啟動情況。

        1.3 配置Spark的IDE開發(fā)環(huán)境

        IDEA作為Scala語言開發(fā)環(huán)境,是良好支持Scala的IDE,故選擇其為Spark應用程序的編程和開發(fā)環(huán)境。但為了避免IDEA在使用過程中產生的過量緩存文件過量占用和消耗I/O資源,選擇SSD固態(tài)硬盤存儲文件以提高性能。

        馬戴一生羈旅,東游江浙,南極瀟湘吳越,西至汧隴,北抵幽燕大漠,跋山涉水,足跡甚遠,嘗盡仕途坎坷的悲苦辛酸,因此他的羈旅之作除了對山水的描摹和懷古傷今之愁以外,也有懷鄉(xiāng)思歸的深切悲痛,以及和著血淚的生活體驗,這些詩歌不僅是其內心情感的集中寫照,也是其政治命運的真實反映,在飽含深情的描繪中,呈現(xiàn)出了既同于中晚唐詩人寫作的共性——精于五律,格律嚴整的藝術成就,也展現(xiàn)了其羈旅行役詩獨特的典雅、清奇的藝術風格。

        IDEA配置完成后,即可以開始進行Spark程序測試。

        2 基于Spark的Apriori算法分布式實現(xiàn)

        2.1 Apriori算法概念和核心步驟

        Apriori算法是一種挖掘關聯(lián)規(guī)則的頻繁項集算法,Apriori算法多次掃描交易數(shù)據(jù)庫,每次利用候選頻繁集產生頻繁集。它的主要步驟可分為定義最小支持度,篩選所有頻繁項集和根據(jù)置信度產生關聯(lián)規(guī)則。

        2.2 Apriori算法基于Spark的分布式實現(xiàn)

        Apriori算法基于Spark分布式集群的基本流程圖,如圖1所示。

        圖1 分布式Apriori算法的實現(xiàn)流程圖

        算法的主要思路為:

        (1) 產生頻繁1項集L1。將事務集T以RDD的形式分布到各個機器上;累計項目數(shù)量和保留高于支持度的項集。

        3 并行Apriori算法的核心步驟為:

        (1) 得到頻繁1項集F1并保存,以下為該步驟核心代碼:

        valfim1=transactions.flatMap(line=>line).Map((,1)).ReduceByKey(_+_).Filter(_._2>minSupport)savefim1(fim1,output+”result-1”,sum)defsavefim1(fim:RDD[(string,int)],path:string,count:double):Unit={fim.map(line=>{line._1+“:%.2f”.format(line._2/count)}).Coalesce(1,true).SaveAsTextFile(path)}

        (2) 頻繁1項集L1自連接產生C1,以C1作為對比,對數(shù)據(jù)庫進行掃描以產生fim2,將fim2保存下來,以下為該步驟核心代碼。

        var(trans,newfim)=LItofim2(fimI.rnap(_._1).collect,transactions,minSupport)save(newfim,output+"result-2",sum)defL1tofim2(L1:Array[String],trans:RDD[(String,Int)],minSupport:Double):RDD[(List[String],Int)]={valL1c=Ll.sizevalcitems=scala.collection.mutable.ArrayBuffer[List[String]]()for(i<-0untilLlc){ for(j<-i+1untilLlc){ Citems+=List(L1(i),L1(j)).sortWith(_<_) }}valbccFI=sc.broadcast(citems)valtemp1=transflatMap(linc=>{) vartmp=scala.collection.mutable.Set[(List[String],Int)]() for(citem<-bccFLvalue){ valtc=isContain(line._l.split("").toSet,citem.toSet) if(tc=1){ tmp+=citem一>line._2 }}tmp})valnewfim=temp1.ReduceByKey(_+_).Filter(_._2>minSupport).cachebccFIunpersist()returnnewfim

        (3) 循環(huán)產生3項集到8項集。以下為核心代碼。

        varfimk=newfim.collectfor(k<一3to8){ valtemp=mine(fimk.map(_._)1),trans,minSup-port) save(temp_2,output+"result-"+k,sum) fimk=temp.2.collect trans=temp._1}defisFrequent(orderitems:List[String],Lmap:scala.col-lection.mutable.Map[...]):Boolean valoCc=orderitems.sizefor(i<-0tooCc一3){ val11=orderitems.slice(0,i) val12}rderitems.slice(i+1,oCc) valkey=11.foldRight(12){(n:String,l2:List[String])=>n::12} valkeyl=key.slice(0,key.size-1)valvalues=Lmap.get(keyl)match{caseSome(n)=>ncaseNone=>List()if(!(values.exists(_=orderitems(oCc-1)))){returnfalse }}returntrue}defcombine(line,List[String]):scala.collection.mutable.ArrayBuffer[List[String]]={valCitems=scala.collection.mutable.ArrayBuffer[List[String]]()valtarray=line.2toArrayvaltc=tarray.sizefor(i<-0untiltc)foro(i<-1+1untiltc)} citems+=(tarray(j):aarray(i):aine._1).sortWith(_<_)}}citemsdefisContain():Int={varcontain=Iset.find(item=>{if(!trans.contains(item)){contain=0true}elseFalse})Contain}

        3 基于Spark的Apriori算法實驗

        3.1 實驗環(huán)境與條件

        分布式Apriori算法的測試環(huán)境為由前面搭建好的Spark on Yarn集群。單機Apriori算法的測試環(huán)境為該集群中的Master節(jié)點。本文以chess標準數(shù)據(jù)集[3]作為待測數(shù)據(jù)集,每一個候選集的編號為該數(shù)據(jù)集每一行的第一個數(shù)字,最小支持度選為85%,頻繁項集K設為8,然后將所設計的算法打包并以包的形式傳到Spark上集群上運行,以進行數(shù)據(jù)挖掘。算法運行過程中需要依次輸入數(shù)據(jù)集路徑和輸出文件夾路徑。數(shù)據(jù)集路徑用于輸入數(shù)據(jù)的存儲和管理,自身存放于HDFS上的data文件夾下;輸出文件夾路徑用于存放需要輸入各項頻繁項集的結果,共包含K個文件夾。每個文件中的內容的格式都為“項集:置信度”。

        3.2 實驗結果分析

        輸出結果存放于result-1至result-8這8個文件中,集群中Worker節(jié)點都打開的時候,程序總體運行時間為74 s。每個文件中的項集數(shù)依次為:984、690、517、358、177、105、32和15個,如圖2所示。

        圖2 各文件中頻繁項集數(shù)

        當最多只有一個Worker節(jié)點工作,其它條件不變時,測試結果,如圖3所示。

        圖3 不同數(shù)量節(jié)點運行時間

        從圖3中可以看出,第1類:當Spark集群中只有一個Master節(jié)點和一個Worker節(jié)點時,節(jié)點運行所消耗的時間為108s;第2類:當Spark集群中的兩個Worker節(jié)點同時運行時,所花費的時間為60 s;第3類:單機模式下,也就是當Spark集群只打開Master節(jié)點,兩個Worker節(jié)點都被關閉時,算法運行所消耗的時間為195 s??梢钥闯觯煌J较碌姆植际讲⑿蠥priori算法運行具有較大的差異。在算法運行過程中會產生大量的候選集,頻繁與HDFS進行交互,導致時間的消耗。另外圖中第4類情況反映的是當Master節(jié)點運行java編寫的單機Apriori算法時的運行情況,所消耗時間長達759 s。

        對于Apriori算法處理相同數(shù)據(jù)集時,Spark集群中的所有節(jié)點在都打開的情況下所消耗的時間遠遠少于單機模式或只有一個Worker節(jié)點和Master節(jié)點打開時所花費的時間,主要原因在于集群中的工作節(jié)點越多使得集群總體配置越高,處理速度自然也就越快。同時Spark支持可伸縮計算的特性也很多提高了原有的大數(shù)據(jù)集的效率。另外,我們也還發(fā)現(xiàn),不同的編程語言也對算法運行結果有著很大的差別。這是因為Spark框架還支持內存計算,部分算法被放入內存中計算,使得Apriori算法的效率在原有的基礎上得到極大提高,這也正是Spark框架的優(yōu)勢之一。但Spark集群運行分布式并行Apriori算法一般更適用于處理較大規(guī)模型的數(shù)據(jù)集,在處理小型數(shù)據(jù)集時,Spark集群運行分布式并行Apriori算法的效率要比單機模式下低。原因在于Spark集群在處理數(shù)據(jù)集時,需要頻繁地與HFDS交互,對數(shù)據(jù)進行RDD分塊和封裝,還有DAG備份恢復等一系列工作。所以Spark集群模式更適用于較大型數(shù)據(jù)集情況。

        4 總結

        本文對基于Spark的大數(shù)據(jù)挖掘技術進行了研究,并提出了基于Spark平臺分布式Apriori算法,有效彌補了MLlib化中的不足,即缺少的關聯(lián)分析類算法,該算法可以應用到關聯(lián)分析大規(guī)模數(shù)據(jù)的場景當中。本文首先搭建起Spark on yarn的分布式Spark生產測試環(huán)境,即由3個以上節(jié)點構成的集群,然后再在所搭建好的集群上對文中算法進行了實驗。實驗以經典算法Apriori為測試算法,測試對象為GB級別的大數(shù)據(jù)集,采用了Scala語言和Spark RDD的分布式算子分別對其進行編碼并運行,同時還比較了其與Apriori算法在運行Java語言所編寫的單機模式下運行結果及效率。

        [1] 中國產業(yè)調研網.2015年中國大數(shù)據(jù)行業(yè)現(xiàn)狀研究分析與市場前景預測報告[EB/OL].http://www.cir.cn/2015-01/DaShuJuHangYeYanJiuFenXi219.html,2017-01-13.

        [2] 道客巴巴.基于Spark的大數(shù)據(jù)挖掘技術的研究與實現(xiàn)[EB/OL].http://www.doc88.com/p-7758265704891.html,2017-01-14.

        [3] 道客巴巴.基于Spark的大數(shù)據(jù)挖掘技術的研究與實現(xiàn)[EB/OL].http://www.doc88.com/p-7758265704891.html,2017-01-14.

        Research on Technology of Big Data Mining Based on Spark

        Wang Xun

        (Section of Teaching Equipment & Lab Management, Shaanxi Xueqian Normal University, Xi’an 710061, China)

        Because big data have the characteristics of large amount of data and rich diversity, it must be demanding large data analysis both in processing speed and real-time requirements. Data mining technology is to use some modeling algorithm from massive data, to look for hidden information behind the data, so that big data can produce greater value. Spark framework is a low latency cluster distributed computing system for super large data sets. Based on the framework, this paper studies the big data mining technology. This paper designs and implements the Yarn deployment on the Spark cluster firstly, and then proposes and implements parallel Apriori algorithm. This algorithm successfully adds to the distributed algorithm of association analysis by the lack of Spark MLlib distributed machine learning repository.

        Big data; Data mining; Spark

        王珣(1982-),男,漢中人,工程師,經濟學碩士,研究方向:信息管理與信息技術。

        1007-757X(2017)06-0064-03

        文獻標志碼:

        2017.02.05)

        猜你喜歡
        項集單機數(shù)據(jù)挖掘
        熱連軋單機架粗軋機中間坯側彎廢鋼成因及對策
        新疆鋼鐵(2021年1期)2021-10-14 08:45:36
        探討人工智能與數(shù)據(jù)挖掘發(fā)展趨勢
        宇航通用單機訂單式管理模式構建與實踐
        水電的“百萬單機時代”
        能源(2017年9期)2017-10-18 00:48:22
        基于并行計算的大數(shù)據(jù)挖掘在電網中的應用
        電力與能源(2017年6期)2017-05-14 06:19:37
        一種基于Hadoop的大數(shù)據(jù)挖掘云服務及應用
        關聯(lián)規(guī)則中經典的Apriori算法研究
        卷宗(2014年5期)2014-07-15 07:47:08
        筑路機械單機核算的思考與研究
        一種頻繁核心項集的快速挖掘算法
        計算機工程(2014年6期)2014-02-28 01:26:12
        基于GPGPU的離散數(shù)據(jù)挖掘研究
        国产内射一级一片高清内射视频| 久久ri精品高清一区二区三区| 国产亚洲精久久久久久无码苍井空| 水蜜桃视频在线观看免费18| 日韩精品中文字幕一区二区| 男人扒开添女人下部免费视频 | 全球av集中精品导航福利| 动漫在线无码一区| 亚洲第一页在线观看视频网站| 人妻精品在线手机观看| 久久亚洲精品11p| 亚洲爆乳大丰满无码专区| 精品女同一区二区三区免费播放| 国产禁区一区二区三区| 久久99久久99精品中文字幕| 无码av在线a∨天堂毛片| 中文字幕色婷婷在线视频| 曰批免费视频播放免费| 国产欧美日韩综合精品二区| 中文精品久久久久中文| av一区二区在线免费观看| 成人爽a毛片免费视频| 日日干夜夜操高清视频| 在线观看视频日本一区二区三区| 男奸女永久免费视频网站| 免费国产黄网站在线观看可以下载 | 亚洲精品乱码久久久久久蜜桃不卡| 911香蕉视频| 美腿丝袜网址亚洲av| 亚洲自偷自拍另类第1页| 少妇白浆高潮无码免费区| 亚洲AV日韩AV高潮喷潮无码| 婚外情长久的相处之道| 久久www免费人成—看片| 人妻AV无码一区二区三区奥田咲 | 男女啪啪啪的高清视频| 国产电影一区二区三区| 久久AⅤ无码精品为人妻系列| 国产成年女人特黄特色毛片免| 国产三级精品视频2021| 国产av电影区二区三区曰曰骚网|