核心
1、spark執行原理
2、rdd
1、spark執行原理
spark應用程式基本概念spark基本工作流程spark 應用程式程式設計模型
1、driver program (sparkcontext)
1、1匯入spark的類和隱式轉換
1、2構建spark應用程式的執行環境 sparkconf
1、3初始化sparkcontext
1、4關閉sparkcontext
1、5spark-shell在啟動的時候會自動構建sparkcontext名稱為sc
2、executor(rdd操作)
輸入 base–>rdd
transformation rdd–>rdd
action rdd—>driver or base
快取 persist or cache
2、rdd
rdd 彈性分布式資料集(resilient distributed datasets):即乙個rdd代表乙個被分割槽的唯讀資料集
rdd的建立只有3種方式rdd彈性特點
1、自動的進行記憶體和磁碟資料儲存的切換
2、自動血緣的高效容錯
3、task如果失敗會自動特點次數的容錯
4、stage失敗會自動特定次數的重試,只會重試失敗的stage
快取點:
1、計算特別耗時
2、計算鏈條很長
3、shuffle之後
4、checkpoint之前
建立操作(creation operation) rdd的初始建立都是由sparkcontext來負責的,將記憶體中的集合或者外部檔案系統作為輸入源
轉換操作(transformation operation) 將乙個rdd通過一定的操作變換成另乙個rdd,比如file這個rdd就是通過filter操作變換成filterrdd的,所以filter就是乙個轉換操作
控制操作(control operation) 對rdd進行持久化,可以讓rdd儲存在磁碟或者記憶體中,以便後續重複使用。比如cache介面預設將filterrdd快取在記憶體中
行動操作(action operation) 由於spark是惰性計算的,所以對於任何rdd進行行動操作,都會觸發spark作業的執行,從而產生最終的結果,例如,我們隊filterrdd進行的count操作就是
乙個行動操作,spark中的行動操作基本分為2類,一類的操作結果變成scala集合或者變數,另一類就是將rdd儲存到外部檔案或者資料庫系統中
rdd與操作之間的關係圖
rdd 操作例項
scala> val data=sc.textfile("/input/passwd")
17/09/13
22:20:39 info storage.memorystore: block broadcast_0 stored as values in memory (estimated size 229.9 kb, free 2.7 gb)
17/09/13
22:20:39 info storage.memorystore: block broadcast_0_piece0 stored as
bytes
in memory (estimated size 19.5 kb, free 2.7 gb)
17/09/13
22:20:39 info storage.blockmanagerinfo: added broadcast_0_piece0 in memory on
192.168
.18.140:55227 (size: 19
.5kb, free: 2
.7gb)
17/09/13
22:20:39 info spark.sparkcontext: created broadcast 0
from textfile at
:27:27
scala> data.todebugstring
17/09/13
22:20:50 info mapred.fileinputformat: total input paths to
process : 1
res0: string =
:27
| /input/passwd hadooprdd[0] at textfile at
:27 //todebugstring方法會列印出rdd的家族關係
//可以看到textfile方法會生成兩個rdd,分別是hadooprdd
scala> val flatted=data.flatmap(_.split(":"))
:29scala> val maped=flatted.map(word=>(word,1))
:31scala> val reduced=maped.reducebykey(_+_)
reduced: org.apache.spark.rdd.rdd[(string, int)] = shuffledrdd[4] at reducebykey at
:33scala> reduced.todebugstring
res1: string =
(2) shuffledrdd[4] at reducebykey at
:33
:31
:29
:27
| /input/passwd hadooprdd[0] at textfile at
:27
從spark ui上我們可以看到在做reducebykey的時候spark做了stage的劃分,其實reducebykey產生了乙個shuffledrdd
20 Spark核心程式設計之Spark架構原理
driver driver 程序 我們編寫的spark程式就在driver上,由driver程序執行 master master是個程序,主要是負責資源的排程和分配,還有集群的監控等等職責 worker worker是個程序,主要負責有兩個,乙個是用自己的記憶體,儲存rdd的某個或某些partiti...
Spark執行架構
job 包含多個task組成的平行計算,乙個dag觸發的作業,由action運算元觸發,在sparkcontext中通過runjob方法向spark提交job stage job的排程單位,每個job會根據rdd的寬依賴關係被切分成很多stage,每個stage中包含一組相同的task,這組task...
spark執行模式
spark的執行模式多種多樣,靈活多變,部署在單機上時,既可以用本地模式執行,也可以用偽分布式模式執行 而當以分布式集群的方式部署時,底層的資源排程既可以依賴於外部的資源排程框架,也可以使用spark內建的standalone模式。對於外部資源排程框架的支援,目前主要包括mesos模式和hadoop...