国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Spark 2.0平臺(tái)在大數(shù)據(jù)處理中的應(yīng)用研究

2017-05-31 06:31周顯春肖衡
軟件導(dǎo)刊 2017年5期
關(guān)鍵詞:決策樹(shù)內(nèi)存集群

周顯春 肖衡

摘要摘要:Spark分布式框架具有利用數(shù)據(jù)集內(nèi)存緩存、啟動(dòng)任務(wù)的低遲延、迭代類(lèi)運(yùn)算、實(shí)時(shí)計(jì)算的支持和強(qiáng)大的函數(shù)式編程接口等特征。描述Spark 集群環(huán)境的搭建過(guò)程,將Spark 應(yīng)用到預(yù)測(cè)森林植被中,對(duì)基于RDD和基于Data Frame接口的Spark隨機(jī)森林算法的性能差異進(jìn)行比較。實(shí)驗(yàn)結(jié)果表明,基于Dataset結(jié)構(gòu)的隨機(jī)森林法預(yù)測(cè)效果好、執(zhí)行時(shí)間短,可以廣泛使用。

關(guān)鍵詞關(guān)鍵詞:Spark 2.0;隨機(jī)森林算法;Dataset;集群環(huán)境

DOIDOI:10.11907/rjdk.171184

中圖分類(lèi)號(hào):TP391

文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào)文章編號(hào):16727800(2017)005014903

0引言

數(shù)據(jù)爆炸式增長(zhǎng)和隱藏在這些數(shù)據(jù)之后的商業(yè)價(jià)值催生了一代又一代的大數(shù)據(jù)處理技術(shù)。2004年Hadoop橫空出世,由Google公司提出的開(kāi)源的MapReduces的大數(shù)據(jù)處理框架拉開(kāi)了其在企業(yè)應(yīng)用的序幕,它被視為解決高性能處理大數(shù)據(jù)的有效方案。但是MapReduces框架不僅存在單點(diǎn)故障,而且對(duì)實(shí)時(shí)數(shù)據(jù)和流式數(shù)據(jù)訪問(wèn)能力弱,導(dǎo)致基于MapReduces框架的Hadoop平臺(tái)應(yīng)用推廣受到較大影響。

Apache Spark是另一種分布式、開(kāi)源計(jì)算框架,目的是簡(jiǎn)化基于計(jì)算機(jī)集群的并行程序的編寫(xiě)。Spark不僅可以發(fā)揮MapReduces對(duì)大數(shù)據(jù)的處理能力[1],還可以充分利用數(shù)據(jù)集內(nèi)存緩存、啟動(dòng)任務(wù)的低遲延、迭代類(lèi)運(yùn)算、實(shí)時(shí)計(jì)算的支持和強(qiáng)大的函數(shù)式編程接口[2]。Spark是Apache的頂級(jí)開(kāi)源項(xiàng)目,功能不斷完善?,F(xiàn)在最新版本為Spark 2.10,它集成了基于RDD和DataFrame(Dataset)兩種編程接口。為了簡(jiǎn)化編程,方便更多人使用,同時(shí)進(jìn)一步提高數(shù)據(jù)處理速度,Spark 3.0版本會(huì)摒棄直接面對(duì)用戶(hù)的基于RDD編程接口。目前,Spark分布式框架在基于機(jī)器學(xué)習(xí)和迭代處理的大數(shù)據(jù)分析上有廣泛應(yīng)用。

1Spark2.0 基本原理

Spark繼承了MapReduces的線性擴(kuò)張性和容錯(cuò)性,同時(shí)對(duì)它作了一些重量級(jí)擴(kuò)展,主要包括核心數(shù)據(jù)結(jié)構(gòu):RDD(Spark 3.0以后使用Data Frame、Dataset)。

RDD是Spark的核心數(shù)據(jù)結(jié)構(gòu),是一種基于內(nèi)存彈性分布式數(shù)據(jù)集[3]。利用RDD可以把一部分?jǐn)?shù)據(jù),包括中間結(jié)果緩存在內(nèi)存中,為后續(xù)計(jì)算所重復(fù)利用,不需要像其它計(jì)算結(jié)構(gòu)需要反復(fù)訪問(wèn)磁盤(pán),節(jié)省了大量時(shí)間。與Hadoop MapReduce相比,其實(shí)驗(yàn)的性能要快100倍,訪問(wèn)磁盤(pán)的性能快10倍[4]?;贒ataFrames/Dataset的高層API,利用PipeLine可以方便用戶(hù)構(gòu)建和調(diào)試機(jī)器學(xué)習(xí)流水線,完成高效的數(shù)據(jù)處理。RDD(DataFrames、Dataset)數(shù)據(jù)結(jié)構(gòu)解決了MapReduces存在的很多問(wèn)題。

(1)解決了MapReduces啟動(dòng)遲緩問(wèn)題[5]。利用Spark采用的有向無(wú)環(huán)圖的任務(wù)調(diào)度機(jī)制,可以對(duì)多個(gè)Stage的Task進(jìn)行串聯(lián)或并聯(lián)Excutor,無(wú)需將每個(gè)Stage的中間結(jié)果保存到HDFS,不需要訪問(wèn)磁盤(pán),因此可以節(jié)省時(shí)間。尤其在計(jì)算機(jī)集群的環(huán)境下,可以避免運(yùn)算時(shí)過(guò)量的網(wǎng)絡(luò)和磁盤(pán)IO開(kāi)銷(xiāo)。

(2)支持迭代計(jì)算。迭代計(jì)算需要訪問(wèn)相同的數(shù)據(jù)集,采用基于內(nèi)存的RDD/DataFrame/Dataset結(jié)構(gòu)可以避免重新計(jì)算和從磁盤(pán)加載。

(3)支持實(shí)時(shí)計(jì)算。基于Spark構(gòu)建Spark Straming 是在Spark基礎(chǔ)上的二次開(kāi)發(fā),主要是將其實(shí)時(shí)、流水任務(wù)離散化成一系列的DStream的數(shù)據(jù)窗口[6],最小窗口選擇只需要0.5~2s,滿足大多數(shù)的準(zhǔn)實(shí)時(shí)計(jì)算場(chǎng)景。

(4)性能優(yōu)化。Dataset API建立在Spark SQL引擎之上,它可以利用Catalyst來(lái)優(yōu)化邏輯計(jì)劃和物理查詢(xún)計(jì)劃。而且采用特殊的Encoder,不僅可以有效序列化JVM object,還可以直接被Spark的許多操作,如Filter、Sort、Hash等使用,從而提高執(zhí)行速度。

2Spark2.0在預(yù)測(cè)森林植被中的應(yīng)用

目前,Spark支持4種運(yùn)行模式。本地單機(jī)模式、集群模式、基于Mesos、基于YARN、基于EC。本文的Spark分布式集群基于YARN,即Hadoop2。

2.1Spark分布式集群環(huán)境搭建

實(shí)驗(yàn)環(huán)境所需的軟硬件設(shè)備如下:

軟件:操作系統(tǒng)采用Ubuntu Server 16.10 版本,Hadoop 2.7 版本,JDK 1.8 版本,虛擬軟件VMware Station Pro 12;硬件:1 臺(tái)聯(lián)想臺(tái)式機(jī),CPU 是主頻3.4GHz的Intel的酷睿i7,超頻4.2 GHz,硬盤(pán)容量1T,內(nèi)存16GB。

Spark集群環(huán)境的搭建過(guò)程如下:

(1) 安裝3臺(tái)虛擬機(jī),OS版本ubuntu server 16.10 版本,并通過(guò)Hostname、Interfaces、Hosts文件分別設(shè)置主機(jī)名(Master、Slave1、Slave2)、IP地址,以及DNS映射關(guān)系,執(zhí)行sudo ufw disable、Ping分別關(guān)閉防火墻以及檢驗(yàn)3臺(tái)虛擬機(jī)互通無(wú)阻。

(2)在每臺(tái)虛擬機(jī)上安裝JDK、Scala、Hadoop、Spark并配置相關(guān)的Java環(huán)境變量。

(3)在每臺(tái)機(jī)器上執(zhí)行安裝openssh-server服務(wù),執(zhí)行ssh-keygen生成SSH 密鑰文件,保證相互直接建立不需要密碼的SSH可信通道。

(4)修改Spark目錄下conf/core-site.xml、mapred -site.xml、 yarn-site.xml、hdfs-site.xml、hdfs-env.sh、masters、slaves文件,確保能夠正常啟動(dòng)Spark。

2.2隨機(jī)森林算法預(yù)測(cè)森林植被實(shí)現(xiàn)

在Spark機(jī)器學(xué)習(xí)中,用于分類(lèi)的算法有很多,其中效果較好的有SVM和隨機(jī)森林算法。隨機(jī)森林(Random Forest,RF)是由 Leo Breiman 將 Bagging 集成學(xué)習(xí)理論[7]與隨機(jī)子空間方法[8]相結(jié)合,于2001年提出的一種機(jī)器學(xué)習(xí)算法[9]。RF利用Bootstrap重抽樣方法從原始樣本中多次隨機(jī)抽取不同特征的子集數(shù)據(jù)組成訓(xùn)練樣本,構(gòu)建多棵、合理、獨(dú)立的子樹(shù),然后融合多棵決策樹(shù)的預(yù)測(cè)結(jié)果。在大數(shù)據(jù)背景下,RF不僅能夠與Spark和Map Reduce的并行處理特征完美結(jié)合,預(yù)測(cè)效果好,而且基于Dataset 的執(zhí)行時(shí)間要比基于RDD的少。

為了更加深入地了解RF性能,尤其是測(cè)試效果,需要在實(shí)踐中進(jìn)行檢驗(yàn)。本實(shí)驗(yàn)數(shù)據(jù)采用Kaggle大賽的數(shù)據(jù)Forestcover-Type-Prediction,記錄了美國(guó)科羅拉多州不同地塊森林植被特征:海拔、坡度、與水源的距離、遮陽(yáng)情況和土壤類(lèi)型,并給出了地塊的已知森林植被類(lèi)型,共54特征,有581012個(gè)樣本[10]。本實(shí)驗(yàn)主要比較基于RDD和基于Data Frame[Row]/Dataset API接口的Spark隨機(jī)森林算法的性能差異。關(guān)鍵代碼及參數(shù)如下:

2.3性能分析

通過(guò)對(duì)決策樹(shù)、隨機(jī)森林模型的impurity、maxDepth、maxBins、minInfoGain、numTrees(只有隨機(jī)森林才有此參數(shù))、maxMemoryInMB等參數(shù)進(jìn)行調(diào)試,對(duì)比其性能,找到最優(yōu)參數(shù)及模型。下面分別從訓(xùn)練時(shí)間、最佳參數(shù)、預(yù)測(cè)效果的Accuracy 3個(gè)方面進(jìn)行比較。

2.3.1尋找最佳參數(shù)訓(xùn)練時(shí)間比較

由表1可以發(fā)現(xiàn),隨機(jī)森林算法的訓(xùn)練時(shí)間,無(wú)論是基于RDD數(shù)據(jù)結(jié)構(gòu)還是基于Datase結(jié)構(gòu),都要比決策樹(shù)算法的訓(xùn)練時(shí)間長(zhǎng)。實(shí)驗(yàn)過(guò)程中的數(shù)據(jù)也顯示,隨著隨機(jī)森林算法的樹(shù)深度的加大和樹(shù)數(shù)量的增加,訓(xùn)練時(shí)間明顯延長(zhǎng)。

2.3.2尋找最佳模型參數(shù)

從表2中可以發(fā)現(xiàn),與決策樹(shù)的最佳參數(shù)相比較,隨機(jī)森林算法的最佳參數(shù)深度相近,桶數(shù)數(shù)量相差很大,該數(shù)據(jù)為調(diào)試最佳參數(shù)有一定的參考意義。

2.3.3預(yù)測(cè)效果Accuracy比較

由表3可知,與決策樹(shù)的Accuracy相比,隨機(jī)森林算法的Accuracy明顯要高(無(wú)論是訓(xùn)練數(shù)據(jù)、交叉數(shù)據(jù),還是測(cè)試數(shù)據(jù))。這說(shuō)明多棵樹(shù)的評(píng)價(jià)效果比單棵樹(shù)的預(yù)測(cè)效果好。

3結(jié)語(yǔ)

Spark實(shí)現(xiàn)了分布式計(jì)算框架,它是采用分布式處理大規(guī)模數(shù)據(jù)的最有效途徑。在搭建好的實(shí)驗(yàn)環(huán)境下,對(duì)基于RDD和基于Data Frame[Row]/Dataset API接口的Spark隨機(jī)森林算法的性能差異進(jìn)行了比較,相對(duì)而言,基于RDD接口的隨機(jī)森林算法的執(zhí)行效率較差。并且將隨機(jī)森林算法與決策樹(shù)算法比較,更好地體現(xiàn)了隨機(jī)森林算法良好的預(yù)測(cè)效果,但是訓(xùn)練的時(shí)間進(jìn)一步延長(zhǎng)了。如何在集群環(huán)境中針對(duì)數(shù)據(jù)的特性,利用Spark平臺(tái)快速找到相應(yīng)的模型并通過(guò)調(diào)整模型參數(shù)使預(yù)測(cè)效果達(dá)到最佳,將是下一步研究的重點(diǎn)。

參考文獻(xiàn)參考文獻(xiàn):

[1]唐振坤.基于Spark的機(jī)器學(xué)習(xí)平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].廈門(mén):廈門(mén)大學(xué),2014.

[2]NICK PENTREATH.Spark機(jī)器學(xué)習(xí)[M].蔡立宇,黃章帥,周濟(jì)民,譯.北京:人民郵電出版社,2016:13.

[3]ZAHARIA M,CHOWDHURY M,F(xiàn)RANKLIN M J,et al.Spark:cluster computing with working sets[C].Proceedings of the 2nd USENIX conference on Hot topics in cloud computing,2010.

[4]XIN R S,ROSEN J,ZAHARIA M,et al.Shark:SQL and rich analytics at scale[C].Proceedings of the 2013 international conference on Management of data,2013:1324.

[5]劉軍,林文輝,方澄著.Spark大數(shù)據(jù)處理原理、算法與實(shí)例[M].北京:清華大學(xué)出版社,2016:2023.

[6]ZAHARIA M,DAS T,LI H,et al.Discretized streams:an efficient and faulttolerant model for stream processing on large clusters[C].Proceedings of the 4th USENIX conference on Hot Topics in Cloud Computing,2012.

[7]BREIMAN L.Bagging predictors[J].Machine Learning,1996,24(2):123140.

[8]HO T.The random subspace method for constructing decision forests[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1998,20(8):832844.

[9]BREIMAN L.Random forests[J].Machine Learning,2001,45(1):532.

[10]SANDY RYZA,URIL LASERSON,SEAN OWEN,et al.Spark高級(jí)數(shù)據(jù)分析[M].龔少成,譯.北京:人民郵電出版社,2016.

責(zé)任編輯(責(zé)任編輯:孫娟)

猜你喜歡
決策樹(shù)內(nèi)存集群
外部高速緩存與非易失內(nèi)存結(jié)合的混合內(nèi)存體系結(jié)構(gòu)特性評(píng)測(cè)
一種針對(duì)不均衡數(shù)據(jù)集的SVM決策樹(shù)算法
海上小型無(wú)人機(jī)集群的反制裝備需求與應(yīng)對(duì)之策研究
“春夏秋冬”的內(nèi)存
決策樹(shù)和隨機(jī)森林方法在管理決策中的應(yīng)用
一種無(wú)人機(jī)集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計(jì)
Python與Spark集群在收費(fèi)數(shù)據(jù)分析中的應(yīng)用
基于決策樹(shù)的出租車(chē)乘客出行目的識(shí)別
基于肺癌CT的決策樹(shù)模型在肺癌診斷中的應(yīng)用
基于內(nèi)存的地理信息訪問(wèn)技術(shù)
烟台市| 汪清县| 五华县| 开阳县| 卓尼县| 陆良县| 方城县| 法库县| 碌曲县| 永福县| 大冶市| 万荣县| 胶州市| 定西市| 东方市| 扎囊县| 左云县| 庄河市| 镇江市| 潞城市| 晋城| 崇明县| 图们市| 西乌珠穆沁旗| 五家渠市| 永胜县| 大厂| 大邑县| 衢州市| 翼城县| 和田市| 阜南县| 抚宁县| 清新县| 定远县| 册亨县| 连南| 承德县| 武强县| 门头沟区| 日照市|