版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第八章Spark分布式內(nèi)存計(jì)算框架科技大學(xué)軟件學(xué)院目錄2Spark簡(jiǎn)介Spark地編程模型Spark地調(diào)度機(jī)制Spark生態(tài)圈其它技術(shù)Zeppelin:互式分析Spark數(shù)據(jù)Spark簡(jiǎn)介3Spark是一種基于內(nèi)存地,用以實(shí)現(xiàn)高效集群計(jì)算地臺(tái)。準(zhǔn)確地講,Spark是一個(gè)大數(shù)據(jù)并行計(jì)算框架,是對(duì)廣泛使用地MapReduce計(jì)算模型地?cái)U(kuò)展。Spark簡(jiǎn)介4促ApacheSpark迅速成長(zhǎng)為大數(shù)據(jù)分析核心技術(shù)地主要原因有以下幾個(gè)。輕量級(jí)快速處理易于使用,支持多語(yǔ)言具有良好地兼容活躍與不斷壯大地社區(qū)完善地生態(tài)圈與Hadoop地?zé)o縫連接目錄5Spark簡(jiǎn)介Spark地編程模型Spark地調(diào)度機(jī)制Spark生態(tài)圈其它技術(shù)Zeppelin:互式分析Spark數(shù)據(jù)Spark地編程模型6核心數(shù)據(jù)結(jié)構(gòu)RDDSpark將數(shù)據(jù)抽象成彈分布式數(shù)據(jù)集(ResilientDistributedDataset,RDD),RDD實(shí)際是分布在集群多個(gè)節(jié)點(diǎn)上數(shù)據(jù)地集合,通過(guò)操作RDD對(duì)象來(lái)并行化操作集群上地分布式數(shù)據(jù)。(一)并行化驅(qū)動(dòng)程序已有地原生集合;(二)引用HDFS,HBase等外部存儲(chǔ)系統(tǒng)上地?cái)?shù)據(jù)集。RDD有兩種創(chuàng)建方式Spark地編程模型7RDD上地操作轉(zhuǎn)換(Transformation)操作:將一個(gè)RDD轉(zhuǎn)換為一個(gè)新地RDD。8RDD上地操作行動(dòng)(Action)操作:行動(dòng)操作會(huì)觸發(fā)Spark提作業(yè),對(duì)RDD行實(shí)際地計(jì)算,并將最終求得地結(jié)果返回到驅(qū)動(dòng)器程序,或者寫(xiě)入外部存儲(chǔ)系統(tǒng)。RDD地持久化9由于SparkRDD是惰求值地,因此,當(dāng)需要多次使用同一個(gè)轉(zhuǎn)換完地RDD時(shí),Spark會(huì)在每一次調(diào)用行動(dòng)操作時(shí)去重新行RDD地轉(zhuǎn)換操作,這樣頻繁地重算在迭代算法地開(kāi)銷(xiāo)很大。為了避免多次計(jì)算同一個(gè)RDD,可以用persist()或cache()方法來(lái)標(biāo)記一個(gè)需要被持久化地RDD,一旦首次被一個(gè)行動(dòng)(Action)觸發(fā)計(jì)算,它將會(huì)被保留在計(jì)算結(jié)點(diǎn)地內(nèi)存并重用。RDD計(jì)算工作流10RDD計(jì)算地具體流程如下。輸入:定義初始RDD,數(shù)據(jù)在Spark程序運(yùn)行時(shí)從外部數(shù)據(jù)空間讀取入系統(tǒng),轉(zhuǎn)換為Spark數(shù)據(jù)塊,形成最初始地RDD;計(jì)算:形成RDD后,系統(tǒng)根據(jù)定義好地Spark應(yīng)用程序?qū)Τ跏嫉豏DD行相應(yīng)地轉(zhuǎn)換操作形成新地RDD;然后,再通過(guò)行動(dòng)操作,觸發(fā)Spark驅(qū)動(dòng)器,提作業(yè)。如果數(shù)據(jù)需要復(fù)用,可以通過(guò)cache操作對(duì)數(shù)據(jù)行持久化操作,緩存到內(nèi)存;輸出:當(dāng)Spark程序運(yùn)行結(jié)束后,系統(tǒng)會(huì)將最終地?cái)?shù)據(jù)存儲(chǔ)到分布式存儲(chǔ)系統(tǒng)或Scala數(shù)據(jù)集合。目錄11Spark簡(jiǎn)介Spark地編程模型Spark地調(diào)度機(jī)制Spark生態(tài)圈其它技術(shù)Zeppelin:互式分析Spark數(shù)據(jù)Spark地調(diào)度機(jī)制12每個(gè)Spark應(yīng)用都由一個(gè)驅(qū)動(dòng)器程序來(lái)發(fā)起集群上地各種并行操作。驅(qū)動(dòng)器程序通過(guò)SparkContext對(duì)象來(lái)訪問(wèn)Spark,這個(gè)對(duì)象代表對(duì)計(jì)算集群地一個(gè)連接,shell在啟動(dòng)時(shí)會(huì)自動(dòng)創(chuàng)建一個(gè)叫作sc變量地SparkContext對(duì)象。Spark地調(diào)度機(jī)制13初始化SparkContext對(duì)象需要傳遞兩個(gè)參數(shù):(一)集群URL:為Spark指定需要連接地集群,如果使用地是local值,可以讓Spark運(yùn)行在單機(jī)單線程上而無(wú)需連接到集群;(二)應(yīng)用名:在Spark運(yùn)行地應(yīng)用程序地名字,當(dāng)連接到一個(gè)集群時(shí),這個(gè)值可以幫助用戶在集群管理器地用戶界面找到自己地應(yīng)用。Spark地調(diào)度機(jī)制14RDD地Action操作觸發(fā)Job地提,提到Spark地Job生成RDDDAG(RDD有向無(wú)環(huán)圖),由DAGScheduler轉(zhuǎn)換為StageDAG,每個(gè)Stage產(chǎn)生相應(yīng)地Task集合,TaskScheduler將任務(wù)分發(fā)到Executor執(zhí)行。Spark地調(diào)度機(jī)制15Spark應(yīng)用(Application)是用戶提地應(yīng)用程序,執(zhí)行模式有Local,Standalone,YARN,Mesos。根據(jù)SparkApplication地DriverProgram是否在集群運(yùn)行,Spark應(yīng)用地運(yùn)行方式又可以分為Cluster模式與Client模式。應(yīng)用地基本組件如下:ApplicationDriverProgramRDDGraphJobStageTaskSpark地調(diào)度機(jī)制16Spark應(yīng)用轉(zhuǎn)換流程:Spark地調(diào)度機(jī)制17在Spark應(yīng)用提之后,Spark啟動(dòng)調(diào)度器對(duì)其行調(diào)度。從整體上看,調(diào)度可以分為四個(gè)級(jí)別:Application調(diào)度Job調(diào)度Stage地調(diào)度Task地調(diào)度目錄18Spark簡(jiǎn)介Spark地編程模型Spark地調(diào)度機(jī)制Spark生態(tài)圈其它技術(shù)Zeppelin:互式分析Spark數(shù)據(jù)Spark生態(tài)圈其它技術(shù)19一.SparkSQL簡(jiǎn)介SparkSQL提供在大數(shù)據(jù)上地SQL查詢功能,是Spark用來(lái)操作結(jié)構(gòu)化數(shù)據(jù)與半結(jié)構(gòu)化數(shù)據(jù)地模型。結(jié)構(gòu)化數(shù)據(jù),是指存放數(shù)據(jù)地記錄或文件帶有固定地字段描述,Excel表格與關(guān)系型數(shù)據(jù)庫(kù)地?cái)?shù)據(jù)都屬于結(jié)構(gòu)化數(shù)據(jù)。而半結(jié)構(gòu)化數(shù)據(jù),則是不符合嚴(yán)格數(shù)據(jù)模型結(jié)構(gòu)地?cái)?shù)據(jù),但也帶有一些數(shù)據(jù)標(biāo)記,如XML文件與JSON文件都是常見(jiàn)地半結(jié)構(gòu)化數(shù)據(jù)。二.SparkStreaming簡(jiǎn)介在一些大數(shù)據(jù)場(chǎng)景,會(huì)有大量地實(shí)時(shí)數(shù)據(jù)產(chǎn)生,如電商用戶地購(gòu)買(mǎi)記錄,搜索引擎地搜索記錄等。這些數(shù)據(jù)地分析反饋往往需要很高地實(shí)時(shí),所以采用傳統(tǒng)MapReduce或者Spark地處理方式(被稱(chēng)為批量處理)分析這些數(shù)據(jù)時(shí)實(shí)時(shí)不夠,就需要采用一種被稱(chēng)作流式計(jì)算地方式,及時(shí)地處理小批量地?cái)?shù)據(jù)。Spark生態(tài)圈其它技術(shù)20三MLlibMLlib是常用地機(jī)器學(xué)算法地Spark實(shí)現(xiàn)庫(kù),同時(shí)包括有關(guān)地測(cè)試與數(shù)據(jù)生成器。機(jī)器學(xué)算法通常涉及較多地迭代計(jì)算,而Spark地設(shè)計(jì)初衷正是為了高效地處理迭代式作業(yè)。作為Spark地機(jī)器學(xué)組件,MLlib繼承了Spark先地內(nèi)存存儲(chǔ)模式與作業(yè)調(diào)度策略,使得其對(duì)機(jī)器學(xué)問(wèn)題地處理速度大大高于普通地?cái)?shù)據(jù)處理引擎GraphX在一些復(fù)雜地計(jì)算場(chǎng)景,需要使用圖地概念時(shí)現(xiàn)實(shí)世界行抽象,如社網(wǎng)絡(luò),知識(shí)圖譜。在社網(wǎng)絡(luò)分析,圖地"點(diǎn)"代表,"邊"則代表與地關(guān)系。圖計(jì)算就是在圖上行分析與計(jì)算。GraphX是Spark含有用于圖計(jì)算與圖并行計(jì)算地程序庫(kù),它為圖計(jì)算提供了豐富地接口,能輕松地基于Spark完成分布式圖計(jì)算。目錄21Spark簡(jiǎn)介Spark地編程模型Spark地調(diào)度機(jī)制Spark生態(tài)圈其它技術(shù)Zeppelin:互式分析Spark數(shù)據(jù)Zeppelin:互式分析Spark數(shù)據(jù)22ApacheZeppelin是一個(gè)基于網(wǎng)頁(yè)地互式數(shù)據(jù)分析工具,它提供了數(shù)據(jù)分析,數(shù)據(jù)可視化等功能。Zeppelin支持多種語(yǔ)言,多種數(shù)據(jù)處理后端:包括ApacheSpark,Python,JDBC,Markdown與Shell等。對(duì)于Spark,更是提供了內(nèi)建地支持,默認(rèn)運(yùn)行Spark-Shell,可以如同使用Spark-Shell一樣使用Zepplin。詳細(xì)地支持列表可以在官網(wǎng)查詢。在使用Spark分析數(shù)據(jù)時(shí),查詢,處理所得到地結(jié)果往往不方便查看。使用Zeppelin能夠互地將數(shù)據(jù)用圖表地形式表現(xiàn)出來(lái)。安裝與啟動(dòng)23Zeppelin官網(wǎng)提供兩種安裝包:內(nèi)置所有解釋器地安裝包,解壓安裝包后可直接運(yùn)行;需要網(wǎng)絡(luò)安裝解釋器地安裝包,用戶可以根據(jù)自己需要選擇安裝部分或全部解釋器。在Zeppelin處理Youtube數(shù)據(jù)24一.//為了使用SparkSQL二.caseclassRecord(三.videoID:String,uploader:String,ments:Int,ratings:Int)四.五.valpattern="""(\S+)\s+(\S+)\s+(\d+)\s+(\D+[a-zA-Z])\s+(\d+)\s+(\d+)\s+(\d+\.?\d*)
\s+(\d+)\s+(\d+)\s+(.*)""".r六.七.valtextRecords=sc.textFile("/path/to/YouTube.txt")八.valrecords=textRecords.filter{九.pattern.findFirstIn(_).isDefined一零.}.map{一一.casepattern(videoID,uploader,age,category,length,views,rate,ratings,ments,relatedIDs)=>{一二.Record(videoID,uploader,ments.toInt,ratings.toInt)一三.}一四.}.toDF()一五.records.createOrReplaceTempView("video")首先,在Zeppelin讀取并處理Youtube數(shù)據(jù),選擇一個(gè)空白地段落輸入如下代碼。此處地處理邏輯與之前用Spark處理地邏輯類(lèi)似,但是為了使用SparkSQL,還需要為視頻記錄創(chuàng)建caseclass。為了使代碼簡(jiǎn)潔,這里僅定義與使用了部分字段。在Zeppelin處理Youtube數(shù)據(jù)25這里需要使用toDF()方法將數(shù)據(jù)轉(zhuǎn)換為DataFrame,然后再使用createOrReplaceView()創(chuàng)建臨時(shí)視圖。完成后就可以在之后地段落使用sql語(yǔ)句查詢。按Shift+Enter鍵運(yùn)行在Zeppelin處理Youtube數(shù)據(jù)26查詢Top一零零地用戶列表,在新地段落地第一行輸入%sql,標(biāo)記這是一個(gè)SparkSQL段落。然后輸入sql查詢語(yǔ)句:selectuploader,count(videoID)ascountfromvideogroupbyuploaderorderbycountdesclimit三零查詢Top一零零地用戶列表地柱狀圖在Zeppelin處理Youtube數(shù)據(jù)27嘗試統(tǒng)計(jì)得到評(píng)論數(shù)最多地一零位用戶,在新地段落輸入,將數(shù)據(jù)按uploader字段分組,并對(duì)ments字段求與并按降序排列,取前一零條記錄,行降序排列:selectuploader,sum(ments)asnumfromvideogroupbyuploaderorderbynumdesclimit一零統(tǒng)計(jì)得到評(píng)論數(shù)最多地一零位用戶在Zeppelin處理Youtube數(shù)據(jù)28統(tǒng)計(jì)有評(píng)分值低于一零分視頻各有多少。這里僅查詢r(jià)atings<一零地記錄,并按ratings分組求與,再按求與結(jié)果降序排列:selectratings,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合作場(chǎng)地出租合同范例
- 小額抵押合同范例
- 人工拆房工程合同范例
- 抵債房屋抵押合同模板
- 承包花崗巖開(kāi)采合同范例
- 養(yǎng)老機(jī)構(gòu)用人合同范例
- 合伙合同范例在
- 義賣(mài)贊助合同范例
- 廣告框架服務(wù)合同范例
- 2024年南昌客運(yùn)員考試題目及答案
- 人行道透水磚施工解決方案2445
- 2023年高考浙江卷英語(yǔ)試題(2023年1月考試-含聽(tīng)力音頻、聽(tīng)力原文和答案)
- 五年級(jí)上冊(cè)數(shù)學(xué)蘇教版課件第1課時(shí) 用列舉法解決問(wèn)題-教案
- 中國(guó)歷史文選第四單元 典志體政書(shū)、詔令奏議
- YC/T 11.4-2006煙草機(jī)械產(chǎn)品圖樣及設(shè)計(jì)文件第4部分:編號(hào)原則
- RB/T 047-2020檢驗(yàn)檢測(cè)機(jī)構(gòu)管理和技術(shù)能力評(píng)價(jià)設(shè)施和環(huán)境通用要求
- 食品安全保障措施方案
- 九年級(jí)化學(xué)上冊(cè)復(fù)習(xí)課件(1-7單元)(2)第一單元復(fù)習(xí)課件
- GB 4806.1-2016食品安全國(guó)家標(biāo)準(zhǔn)食品接觸材料及制品通用安全要求
- 輸出共模電感規(guī)格書(shū)
- 【外科學(xué)】微創(chuàng)外科技術(shù)-課件
評(píng)論
0/150
提交評(píng)論