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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

Spark用戶程序,提交一次應用為一個Application,一個App會啟動一個SparkContext,也就是Application的Driver,驅動整個Application的運行。Job:

一個Application可能包含多個Job,每個action算子對應一個Job;action算子有collect,count等。Stage:

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

具體執(zhí)行任務的基本單位,被發(fā)到executor上執(zhí)行。Spark應用運行流程ClientDriverApplicationMasterResourceManagerExecutor1、啟動ExecutorExecutorExecutor2、申請AM3、啟動AM4、申請Container5、啟動Executor8、注銷應用…6、注冊7、分配TaskRDD的存儲和分區(qū)用戶可以選擇不同的存儲級別存儲RDD以便重用(11種)。當前RDD默認存儲于內存,但當內存不足時,RDD會溢出到磁盤中。RDD在需要進行分區(qū)時會根據(jù)每條記錄Key進行分區(qū),以此保證兩個數(shù)據(jù)集能高效進行Join操作。RDD的生成從Hadoop文件系統(tǒng)(或與Hadoop兼容的其它存儲系統(tǒng))輸入創(chuàng)建(如HDFS)。從父RDD轉換得到新的RDD。RDD的優(yōu)點RDD是只讀的,可提供更高的容錯能力。RDD的不可變性,可以實現(xiàn)HadoopMapReduce的推測式執(zhí)行。RDD的數(shù)據(jù)分區(qū)特性,可以通過數(shù)據(jù)的本地性來提高性能。RDD都是可序列化的,在內存不足時可自動降級為磁盤存儲。RDD的特點失敗自動重建。可以控制存儲級別(內存,磁盤等)來進行重用。是靜態(tài)類型的。RDD(ResilientDistributedDatasets)即彈性分布數(shù)據(jù)集,指的是一個只讀的,可分區(qū)的分布式數(shù)據(jù)集。這個數(shù)據(jù)集的全部或部分可以緩存在內存,在多次計算之間重用。RDDSpark核心概念--RDD返回值還是一個RDD,如map、filter、join等。Transformation都是Lazy的,代碼調用到Transformation的時候,并不會馬上執(zhí)行,需要等到有Action操作的時候才會啟動真正的計算過程。如count,collect,save等,Action操作是返回結果或者將結果寫入存儲的操作。Action是Spark應用真正執(zhí)行的觸發(fā)動作。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應用名稱

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對象,設置應用名稱為Wordcount。從HDFS加載文本文件,得到一個RDD。調用RDD的Transformation進行計算:將文本文件按空格分割,然后每個單詞計數(shù)置為1,最后按相同的Key將計數(shù)求合。這一步會分發(fā)到各個Executor上執(zhí)行。調用Action操作,保存結果。這一行才觸發(fā)真正的任務執(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父子依賴關系:窄依賴(Narrow)指父RDD的每一個分區(qū)最多被一個子RDD的分區(qū)所用。寬依賴(Wide)指子RDD的分區(qū)依賴于父RDD的所有分區(qū),是Stage劃分的依據(jù)。Spark應用調度Spark概述Spark基本功能技術功架SparkCoreSparkSQLSparkStreamingSpark在FusionInsight中的集成情況SparkSQL所處位置SparkSQL原理spark-corespark-sqlJSONParquetORC…SQLRDDSpark概述Spark基本功能技術功架SparkCoreSparkSQLSparkStreamingSpark在FusionInsight中的集成情況SparkStreaming所處位置SparkStreaming原理SparkStreaming接收實時的輸入數(shù)據(jù)流,然后將這些數(shù)據(jù)切分為批數(shù)據(jù)供Spark引擎處理,Spark引擎將數(shù)據(jù)生成最終的結果數(shù)據(jù)。使用DStream從Kafka和HDFS等源獲取連續(xù)的數(shù)據(jù)流,Dstreams由一系列連續(xù)的RDD組成,每個RDD包含確定時間間隔的數(shù)據(jù),任何對Dstreams的操作都轉換成對RDD的操作。SparkStreaming對比StormSpark概述Spark基本功能技術功架Spark在FusionInsight中的集成情況Spark的WebUI呈現(xiàn)1.服務狀態(tài)信息、角色信息以及開

放的配置項。2.管理操作:啟停spark、下載spark客戶端、同步配置。3.服務總體概況。4.角色的顯示和健康狀況,點擊相

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論