預習課件上課前會有部分03唯快不破spark_第1頁
預習課件上課前會有部分03唯快不破spark_第2頁
預習課件上課前會有部分03唯快不破spark_第3頁
預習課件上課前會有部分03唯快不破spark_第4頁
預習課件上課前會有部分03唯快不破spark_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、唯快不破Spa唯快不破SparSparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n #wget HYPERLINK http:/m/ #cp#wget HYPERLINK http:/m/ #cpspark-env.sh.templatespark-S p a r k 的 安 裝#cpslaves.templateS #cpslaves.templateS p a r k 的 安 裝#./sbin/start-S p a #./sbin/start-S p a r k 的 啟 動#

2、./bin/run-le SparkPi 10 -master Spark# ./bin/spark-# ./bin/run-le SparkPi 10 -master Spark# ./bin/spark-master lib/spark-les-1.6.0-SparkonYarn集群上yarn-cluster# ./bin/spark-submit -les.SparkPi -master yarn-cluster les-1.6.0-hadoop2.6.0.jar S p a r k 的 驗 證Spark standalone vs. Spark on Spark standalone:

3、獨立模式,類似MapReduce 1.0所采取的Spark standalone vs. Spark on Spark standalone:獨立模式,類似MapReduce 1.0所采取的模式,完全實現(xiàn)容錯性和資源管Spark on Yarn:讓Spark運行在一個通用的資源管理系統(tǒng)之上,這樣可以與其他計算框架共享資Yarn Yarn nt vs. Spark Standlone vs. Yarn nt:適用于交互與Driver在任務提交機上執(zhí)ApplicationMaster只負責向ResourceManager申請executor需要的資基于yarn時,spark-和pyspark必須要

4、使用yarn-nt模Yarn Cluster:適用于生產(chǎn)環(huán)S p a r k 的 驗 證Yarn Cluster vs. Yarn nt區(qū)別:本質(zhì)是AM進程的區(qū)Yarn Cluster vs. Yarn nt區(qū)別:本質(zhì)是AM進程的區(qū)別,cluster模式下,driver運行在AM中,負責向Yarn申請資,并監(jiān)督作業(yè)運行狀況,當用戶提交完作用后,就關掉nt,作業(yè)會繼續(xù)在yarn上運行。然而cluster模式不適合交類型的作業(yè)。而開nt模式,AM僅向yarn請求nt會和請求的container通信來調(diào)度任務,即ntS p a r k 的 驗 證Master:類似Yarn中的Worker:類似Yar

5、n中的S p a r k 的 資 源 管 理 組 件Hadoop中一個MapReduce程序就是一Hadoop中一個MapReduce程序就是一個job,而一個job里面可以有一個或多個Task,Task又可以區(qū)分為Map Task和Reduce MapReduce中的每個Task分別在自己的進程中運行,當該Task運S p a r k 和 H a d o o p 作 業(yè) 之 間 的 區(qū) 別Spark中同樣有job的概念,但這里的job和MR中的jobSpark中同樣有job的概念,但這里的job和MR中的job不一 在job里面包含多個stage,stage以shuffle進行劃分,stag

6、e包含多個Task,多個了Task 和MapReduce不一樣,Spark中多個Task可以運行在一個進 優(yōu)點:加快Spark運行速度,Task可以快速啟動,并處理內(nèi)存數(shù)缺點:每個plicio擁有固定數(shù)量的exector和固定數(shù)目的內(nèi)存S p a r k 和 H a d o o p 作 業(yè) 之 間 的 區(qū) 別SparkJob:SparkJob:由多個stage組Stage:對應一個Taskset:對應一組關聯(lián)的相Task:任務最小的S p a r k 和 H a d o o p 作 業(yè) 之 間 的 區(qū) 別 (驅(qū)動程序)是Spark 構(gòu)建SparkContext(Spark (驅(qū)動程序)是Spa

7、rk 構(gòu)建SparkContext(Spark 真正執(zhí)行task的單元,一個WorkNode上可以有多個S p a r k 和 H a d o o p 作 業(yè) 之 間 的 區(qū) 別SparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n S c S c a l a 語 言SS c a l a 語 言S c a l a S c a l a 語 言 S c a l S c a l a 語 言valnewArrayvalgreetStringsnewvalnewArrayvalgreetStri

8、ngsnewS c a l a 語 言方式:Array.ofDim類型(維度123,. )例子:valmuldimArr也可以通過方式:Array.ofDim類型(維度123,. )例子:valmuldimArr也可以通過S c a l a 語 言S c a l S c a l a 語 言。S c a 。S c a l a 語 言。S c a 。S c a l a 語 言S c a l a S c a l a 語 言S c a l aS c a l a 語 言函定義的格式為:def數(shù)名(參數(shù)列函定義的格式為:def數(shù)名(參數(shù)列表回值類型函數(shù)函數(shù)返回值可以用return指定,使用return時函

9、數(shù)定義必須指定返回值類型如果沒有使用return關鍵字,默認函數(shù)體代碼塊的最后計算的表達式的值作為返回值無需指定返回值類型對于遞歸函數(shù),必須指定返回值類型可以在函數(shù)再定義函數(shù),如同定義一個局部變量S c a l a 語 言S c a S c a l a 語 言可使用“_S可使用“_S c a l a 語 言和Java不同的,Scala的缺省修飾符為public飾符public,protected,private,Scala缺省定義為 public。S c a 和Java不同的,Scala的缺省修飾符為public飾符public,protected,private,Scala缺省定義為 pub

10、lic。S c a l a 語 言)S )S c a l a 語 言SparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n S p a r o y a r n 的 結(jié) 構(gòu)也是一個分布式的并行計算框sparkmare也是一個分布式的并行計算框sparkmareduce,擴展了mr的數(shù)據(jù)處理流程。 exector都是裝載在contaiercotaie默認內(nèi)存是 1Gschedulermiimumallocation) exectorexectormemoryARexectormemory

11、+ 1*exectors。M在rk中叫driver,M向RM申請的是exector資源,當分配完資源后,exector啟動后,由spark的M向exector分配tasktaskexector由M決定,可理sparktaskexectorExecutor有線程池多線程管理這些坑內(nèi)的Sparkdriver /SparkSparkExecutor伴隨整個app線程池模型,省去進程頻S p a r o y a r n 的 結(jié) 構(gòu)SparkMR快 分布式分布式存 存 分布式存原始selectcol2,max(col3)fromtable wherecol150 group by col2selectc

12、ol3,maxSparkMR快 分布式分布式存 存 分布式存原始selectcol2,max(col3)fromtable wherecol150 group by col2selectcol3,max(col2)fromtable wherecol150 group by col3select*fromtable wherecol150 selectcol2,max(col3)fromcachetablegroupby ol2)fromcachetablegroupS p a r o y a r n 的 結(jié) 構(gòu)更豐富的(解決API單更豐富的(解決API單一問題Transfomation變換的

13、api,比如map可對每一行做變換,filter過濾出符合條件的行等,這些API實現(xiàn)用戶,靈活spark提供很多轉(zhuǎn)換和動作,很多基本操作如Join,GroupBy已經(jīng)在RDD轉(zhuǎn)換和動作中實現(xiàn)。不需用戶自己現(xiàn)S p a r o y a r n 的 結(jié) 構(gòu)本,解決MRvalfile=本,解決MRvalfile=sc.textFile(hdfs:/input) val counts = file.flatMap(line = line.split( .map(word=(word,.reduceByKey(_+S p a r o y a r n 的 結(jié) 構(gòu)SparkScalaSparkSparkSp

14、arkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n RDD(RDD使用戶能RDD(RDD使用戶能夠顯式將計算結(jié)果保存在內(nèi)存中,控制數(shù)據(jù)的劃分,并使用更豐富的操作集合來處使用更豐富的操作來處理,只讀(由一個RDD變換得到另一個RDD,但是不能對本身的RDD修改數(shù)據(jù)的變換而不是數(shù)據(jù)本身保證容錯通常在不同機器上備份數(shù)據(jù)或數(shù)據(jù)更新的方式完成容錯,但這種對任務密集型任務代價很RDD采用數(shù)據(jù)應用變換(map,filter,join),若部分數(shù)據(jù)丟失,RDD擁有足夠的信息得知這部分數(shù)據(jù)是如何計算得到的,可通過重新計算來得到丟的數(shù)這種恢復數(shù)

15、據(jù)方法很快,無需大量操作,可以認為Spark是基于RDD模型的系懶操作,延遲計算,action瞬時性,用時才產(chǎn)生,用S p a r 從共享文件系統(tǒng)中獲取,如從HDFS中讀數(shù)據(jù)構(gòu)建vala = 通過現(xiàn)有RDD轉(zhuǎn)換 從共享文件系統(tǒng)中獲取,如從HDFS中讀數(shù)據(jù)構(gòu)建vala = 通過現(xiàn)有RDD轉(zhuǎn)換 到的第一個類,包含sparkconf sparkenv等valb = a.map(x=(x, valc=sc.parallelize(1 to10,val d rsist(), a.S p a r S S p a r 實際數(shù)據(jù)塊的描述(實際數(shù)據(jù)到底存在哪,或者不存在其值依賴于哪些寬依賴實際數(shù)據(jù)塊的描述(實際

16、數(shù)據(jù)到底存在哪,或者不存在其值依賴于哪些寬依賴B的每個partition依賴于A的所有比如groupByKey、reduceByKey、join,由A產(chǎn)生B時會先對A做shuffle分窄依賴B的每個partition依賴于A的常數(shù)個比如map、filter、S p a r S p a r S p a r R D D 依 賴 關 系S p a r R S p a r R D D 依 賴 關 系從后往前,將寬依賴的邊刪掉, 連通分量及其在原圖中所有賴的一個StageDAG 是在計算過程中 不 斷 擴 展 , 在 action 后才會啟動算每個從后往前,將寬依賴的邊刪掉, 連通分量及其在原圖中所有賴

17、的一個StageDAG 是在計算過程中 不 斷 擴 展 , 在 action 后才會啟動算每個盡可能多地包含一組具有窄依賴關系的轉(zhuǎn)換,并將它們流水線并化StageStageS p a r R D D 依 賴 關 系S p a r R D D 依 賴 關 系) S) S p a r 容 錯SparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n S p a r k S p a r k 作 業(yè) 運 行 原 理Executor的內(nèi)存分為3第一塊:Executor的內(nèi)存分為3第一塊:讓task執(zhí)

18、行代碼時,默認占executor總內(nèi)存的第二塊:task通過shuffle過程拉取上一個stage的task的輸出后,進行聚合等操作時使,默認也是占第三塊:讓RDD持久化時使用,默認占executor總內(nèi)存的Task的執(zhí)行速度和每個executor進程的CPU Core數(shù)量有直接關系,一個CPU Core同一方式,多線程并發(fā)運行的。如果CPU Core數(shù)量比較充足,而且分配到的task數(shù)量比較合理,那么可以比較快速和高效地執(zhí)行完這些task線S p a r k 資 源 參 數(shù) 調(diào) 優(yōu)num-executors:該作業(yè)總共需要多少executor進程num-executors:該作業(yè)總共需要多少

19、executor進程執(zhí)executor-memory:設置每個executor進程的內(nèi)存, num-executors* num- executor進程并行執(zhí)行tasknum-executors*executor-cores代表作業(yè)申請總CPU core數(shù)(不要超過總CPU Core的1/31/2 )S p a r k 資 源 參 數(shù) 調(diào) 優(yōu)driver-memory:設置Driver進程的建議:driver-memory:設置Driver進程的建議:通常不用設置,一般1G就夠了,若出現(xiàn)使用collect算子將RDD數(shù)據(jù)全部拉取到Driver上處理,就必須保該值足夠大,否則OOM內(nèi)存溢spar

20、k.default.parallelism:每個stage的默認task數(shù)建議:設置5001000較合適,默認一個HDFS的block對應一個task,Spark默認值偏少,這樣導致不能充分用資spatagmactnDeuo6euor0數(shù)據(jù)建議:若有較多的持久化操作,可以設置高些,超出內(nèi)存的會頻繁gc導致運行spark.shuffle.memoryFraction:聚合操作占executor內(nèi)存的比例,默認建議:若持久化操作較少,但shuffle較多時,可以降低持久化內(nèi)存占比,提高shuffle操作內(nèi)存占S p a r k 資 源 參 數(shù) 調(diào) 優(yōu)S p a r kS p a r k 資 源 參 數(shù) 調(diào) 優(yōu)S p a S p a r k 開 發(fā) 調(diào) 優(yōu) 比如:一個RDD數(shù)據(jù)格式是key-value,另一個是單獨value類型,這兩個RDD的value部分完S p a 比如:一個RDD數(shù)據(jù)格式是key-value,另一個是單獨value類型,這兩個RDD的value部分完S p a r k 開 發(fā) 調(diào) 優(yōu) 每次對一個RDD執(zhí)行一個算子操作時,都會重新從 每次對一個RDD執(zhí)行一個算子操作時,都會重新從 S p a r k 開 發(fā) 調(diào) 優(yōu) persistS p a persistS p a r k 開 發(fā) 調(diào) 優(yōu) S p a r k 開 發(fā) 調(diào) 優(yōu) S p a r k 開 發(fā) 調(diào) 優(yōu)Sp

溫馨提示

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

評論

0/150

提交評論