module04spark基于內(nèi)存的分布式計(jì)算技術(shù)01原理_第1頁(yè)
module04spark基于內(nèi)存的分布式計(jì)算技術(shù)01原理_第2頁(yè)
module04spark基于內(nèi)存的分布式計(jì)算技術(shù)01原理_第3頁(yè)
module04spark基于內(nèi)存的分布式計(jì)算技術(shù)01原理_第4頁(yè)
module04spark基于內(nèi)存的分布式計(jì)算技術(shù)01原理_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

修訂記錄建議直接將本膠片另存,然后在此膠片的基礎(chǔ)上進(jìn)行編輯。本部分包含:培訓(xùn)目標(biāo)、目錄、習(xí)題、總結(jié)、問(wèn)題等模板。參考IT解決方案產(chǎn)品培訓(xùn)課程開發(fā)內(nèi)容要素,按照模塊開發(fā)。課程編碼適用產(chǎn)品產(chǎn)品版本課程版本ISSUEH13-711FusionInsightHDV100R002C60V1.0開發(fā)/優(yōu)化者時(shí)間審核人開發(fā)類型(新開發(fā)/優(yōu)化)許田立002572582016年6月高冬冬wx321719新開發(fā)本頁(yè)不打印Spark技術(shù)原理學(xué)完本課程后,您將能夠:理解Spark應(yīng)用場(chǎng)景,掌握Spark特點(diǎn)掌握Spark計(jì)算能力及其技術(shù)架構(gòu)掌握Spark組件在FusionInsight平臺(tái)中的使用Spark概述Spark基本功能技術(shù)架構(gòu)Spark在FusionInsight中的集成情況

是什么?是一個(gè)基于內(nèi)存的分布式批處理引擎。由AMPLAB貢獻(xiàn)到Apache社區(qū)的開源項(xiàng)目,是AMP大數(shù)據(jù)棧的基礎(chǔ)組件。做什么?數(shù)據(jù)處理(DataProcessing):可以用來(lái)快速處理數(shù)據(jù),兼具容錯(cuò)性和可擴(kuò)展性。迭代計(jì)算(Iterative

Computation):支持迭代計(jì)算,有效應(yīng)對(duì)多步數(shù)據(jù)處理邏輯。數(shù)據(jù)挖掘(DataMining):在海量數(shù)據(jù)基礎(chǔ)上進(jìn)行復(fù)雜的挖掘分析,可支持各種數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)算法。Spark概述Spark適用場(chǎng)景適用場(chǎng)景對(duì)比Hadoop性能上提升高于100倍。Spark的中間數(shù)據(jù)放在內(nèi)存中,對(duì)于迭代運(yùn)算的效率更高,進(jìn)行批處理時(shí)更高效。更低的延遲。Spark提供更多的數(shù)據(jù)集操作類型,編程模型比Hadoop更靈活,開發(fā)效率更高。更高的容錯(cuò)能力(血統(tǒng)機(jī)制)。數(shù)據(jù)處理,ETL(抽取、轉(zhuǎn)換、加載)。機(jī)器學(xué)習(xí)。交互式分析。特別適用于迭代計(jì)算,數(shù)據(jù)重復(fù)利用場(chǎng)景。需要反復(fù)操作的次數(shù)越多,所需讀取的數(shù)據(jù)量越大,受益越大。Spark的特點(diǎn)快Spark對(duì)小數(shù)據(jù)集可達(dá)到亞秒級(jí)的延遲Spark巧巧妙借力現(xiàn)有大數(shù)據(jù)組件輕Spark核心代碼有3萬(wàn)行靈Spark提供了不同層面的靈活性Spark概述Spark基本功能技術(shù)架構(gòu)SparkCoreSparkSQLSparkStreamingSpark在FusionInsight中的集成情況Spark技術(shù)架構(gòu)SparkFusionInsightSpark架構(gòu)Spark應(yīng)用運(yùn)行流程—關(guān)鍵角色Client:需求提出方,負(fù)責(zé)提交需求(應(yīng)用)。Driver:負(fù)責(zé)應(yīng)用的業(yè)務(wù)邏輯和運(yùn)行規(guī)劃(DAG)。ApplicationMaster:負(fù)責(zé)應(yīng)用的資源管理,根據(jù)應(yīng)用需要,向資源管理部門(ResourceManager)申請(qǐng)資源。ResourceManager:資源管理部門,負(fù)責(zé)整個(gè)集群資源統(tǒng)一調(diào)度和分配。Executor:負(fù)責(zé)實(shí)際計(jì)算工作,一個(gè)應(yīng)用會(huì)分拆給多個(gè)Executor來(lái)進(jìn)行計(jì)算。Spark基本概念A(yù)pplication:

Spark用戶程序,提交一次應(yīng)用為一個(gè)Application,一個(gè)App會(huì)啟動(dòng)一個(gè)SparkContext,也就是Application的Driver,驅(qū)動(dòng)整個(gè)Application的運(yùn)行。Job:

一個(gè)Application可能包含多個(gè)Job,每個(gè)action算子對(duì)應(yīng)一個(gè)Job;action算子有collect,count等。Stage:

每個(gè)Job可能包含多層Stage,劃分標(biāo)記為shuffle過(guò)程;Stage按照依賴關(guān)系依次執(zhí)行。Task:

具體執(zhí)行任務(wù)的基本單位,被發(fā)到executor上執(zhí)行。Spark應(yīng)用運(yùn)行流程ClientDriverApplicationMasterResourceManagerExecutor1、啟動(dòng)ExecutorExecutorExecutor2、申請(qǐng)AM3、啟動(dòng)AM4、申請(qǐng)Container5、啟動(dòng)Executor8、注銷應(yīng)用…6、注冊(cè)7、分配TaskRDD的存儲(chǔ)和分區(qū)用戶可以選擇不同的存儲(chǔ)級(jí)別存儲(chǔ)RDD以便重用(11種)。當(dāng)前RDD默認(rèn)存儲(chǔ)于內(nèi)存,但當(dāng)內(nèi)存不足時(shí),RDD會(huì)溢出到磁盤中。RDD在需要進(jìn)行分區(qū)時(shí)會(huì)根據(jù)每條記錄Key進(jìn)行分區(qū),以此保證兩個(gè)數(shù)據(jù)集能高效進(jìn)行Join操作。RDD的生成從Hadoop文件系統(tǒng)(或與Hadoop兼容的其它存儲(chǔ)系統(tǒng))輸入創(chuàng)建(如HDFS)。從父RDD轉(zhuǎn)換得到新的RDD。RDD的優(yōu)點(diǎn)RDD是只讀的,可提供更高的容錯(cuò)能力。RDD的不可變性,可以實(shí)現(xiàn)HadoopMapReduce的推測(cè)式執(zhí)行。RDD的數(shù)據(jù)分區(qū)特性,可以通過(guò)數(shù)據(jù)的本地性來(lái)提高性能。RDD都是可序列化的,在內(nèi)存不足時(shí)可自動(dòng)降級(jí)為磁盤存儲(chǔ)。RDD的特點(diǎn)失敗自動(dòng)重建??梢钥刂拼鎯?chǔ)級(jí)別(內(nèi)存,磁盤等)來(lái)進(jìn)行重用。是靜態(tài)類型的。RDD(ResilientDistributedDatasets)即彈性分布數(shù)據(jù)集,指的是一個(gè)只讀的,可分區(qū)的分布式數(shù)據(jù)集。這個(gè)數(shù)據(jù)集的全部或部分可以緩存在內(nèi)存,在多次計(jì)算之間重用。RDDSpark核心概念--RDD返回值還是一個(gè)RDD,如map、filter、join等。Transformation都是Lazy的,代碼調(diào)用到Transformation的時(shí)候,并不會(huì)馬上執(zhí)行,需要等到有Action操作的時(shí)候才會(huì)啟動(dòng)真正的計(jì)算過(guò)程。如count,collect,save等,Action操作是返回結(jié)果或者將結(jié)果寫入存儲(chǔ)的操作。Action是Spark應(yīng)用真正執(zhí)行的觸發(fā)動(dòng)作。ActionTransformationRDD算子:Transformation和Action常用的Transformation:map(f:T=>U):RDD[T]=>RDD[U]?lter(f:T=>Bool):RDD[T]=>RDD[T]?atMap(f:T=>Seq[U]):RDD[T]=>RDD[U]groupByKey():RDD[(K,V)]=>RDD[(K,Seq[V])]reduceByKey(f:(V,V)=>V):RDD[(K,V)]=>RDD[(K,V)]union():(RDD[T],RDD[T])=>RDD[T]join():(RDD[(K,V)],RDD[(K,W)])=>RDD[(K,(V,W))]mapValues(f:V=>W):RDD[(K,V)]=>RDD[(K,W)]partitionBy(p:Partitioner[K]):RDD[(K,V)]=>RDD[(K,V)]常用的Action:count():RDD[T]=>Longcollect():RDD[T]=>Seq[T]reduce(f:(T,T)=>T):RDD[T]=>Tlookup(k:K):RDD[(K,V)]=>Seq[V]RDD

Transformation和ActionRDD

Transformation和ActionHDFSHDFSflatMapmapreducyByKeytextFileJoin132456saveAsSequenceFileobjectWordCount{defmain(args:Array[String]):Unit={//配置Spark應(yīng)用名稱

valconf=newSparkConf().setAppName("WordCount")valsc:SparkContext=newSparkContext(conf)valtextFile=sc.textFile("hdfs://...")valcounts=textFile.flatMap(line=>line.split("")).map(word=>(word,1)).reduceByKey(_+_)counts.saveAsTextFile("hdfs://...")}}創(chuàng)建SparkContext對(duì)象,設(shè)置應(yīng)用名稱為Wordcount。從HDFS加載文本文件,得到一個(gè)RDD。調(diào)用RDD的Transformation進(jìn)行計(jì)算:將文本文件按空格分割,然后每個(gè)單詞計(jì)數(shù)置為1,最后按相同的Key將計(jì)數(shù)求合。這一步會(huì)分發(fā)到各個(gè)Executor上執(zhí)行。調(diào)用Action操作,保存結(jié)果。這一行才觸發(fā)真正的任務(wù)執(zhí)行。樣例程序--WordCountHDFS(A,2)(apple,2)(pair,1)(of,1)(shoes,1)(Orange,1)AappleApairofshoesOrangeappleAappleApairofshoesOrangeapple(A,1)(apple,1)(A,1)(pair,1)(of,1)(shoes,1)(Orange,1)(apple,1)HDFSflatMapmapreduceByKeysaveAsTextFileAnappleApairofshoesOrangeappletextFile(A,2)(apple,2)(pair,1)(of,1)(shoes,1)(Orange,1)RDDRDDRDDRDDHDFSHDFS樣例程序--WordCountSpark核心概念–寬依賴和窄依賴RDD父子依賴關(guān)系:窄依賴(Narrow)指父RDD的每一個(gè)分區(qū)最多被一個(gè)子RDD的分區(qū)所用。寬依賴(Wide)指子RDD的分區(qū)依賴于父RDD的所有分區(qū),是Stage劃分的依據(jù)。Spark應(yīng)用調(diào)度Spark概述Spark基本功能技術(shù)功架SparkCoreSparkSQLSparkStreamingSpark在FusionInsight中的集成情況SparkSQL所處位置SparkSQL原理spark-corespark-sqlJSONParquetORC…SQLRDDSpark概述Spark基本功能技術(shù)功架SparkCoreSparkSQLSparkStreamingSpark在FusionInsight中的集成情況SparkStreaming所處位置SparkStreaming原理SparkStreaming接收實(shí)時(shí)的輸入數(shù)據(jù)流,然后將這些數(shù)據(jù)切分為批數(shù)據(jù)供Spark引擎處理,Spark引擎將數(shù)據(jù)生成最終的結(jié)果數(shù)據(jù)。使用DStream從Kafka和HDFS等源獲取連續(xù)的數(shù)據(jù)流,Dstreams由一系列連續(xù)的RDD組成,每個(gè)RDD包含確定時(shí)間間隔的數(shù)據(jù),任何對(duì)Dstreams的操作都轉(zhuǎn)換成對(duì)RDD的操作。SparkStreaming對(duì)比StormSpark概述Spark基本功能技術(shù)功架Spark在FusionInsight中的集成情況Spark的WebUI呈現(xiàn)1.服務(wù)狀態(tài)信息、角色信息以及開

放的配置項(xiàng)。2.管理操作:?jiǎn)⑼park、下載spark客戶端、同步配置。3.服務(wù)總體概況。4.角色的顯示和健康狀況,點(diǎn)擊相

應(yīng)角色可查看角色下的實(shí)例。FusionInsight平臺(tái)為Spark服務(wù)提供了管理監(jiān)控的可視化界面,通過(guò)WebUI界面,可完成以下動(dòng)作:1234Spark常駐進(jìn)程JDBCServer實(shí)際上是一個(gè)長(zhǎng)駐的spark應(yīng)用,對(duì)外提供JDBC的服務(wù)。用戶可以通過(guò)執(zhí)行beeline或者JDBC腳本,連接JDBCServer,執(zhí)行sql語(yǔ)句。主備部署,無(wú)單點(diǎn)故障。JobHistory該進(jìn)程用于提供HistoryServer頁(yè)面,展示歷史Spark應(yīng)用的執(zhí)行信息。雙節(jié)點(diǎn)負(fù)荷分擔(dān),無(wú)單點(diǎn)故障。Spark與其他組件交互在FusionInsight集群中,Spark主要與以下組件進(jìn)行交互:HDFS:Spark在HDFS文件系統(tǒng)中讀寫數(shù)據(jù)(必選)。YARN:Spark任務(wù)的運(yùn)行依賴Yarn來(lái)進(jìn)行資源的調(diào)度管理(必選)。Hive:Spark-sql的元數(shù)據(jù)庫(kù)和數(shù)據(jù)文件與Hive完全共用(必選)。Zookeeper:JDBCServer的HA的實(shí)現(xiàn)依賴于Zookeeper的協(xié)調(diào)(必選)。

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論