Spark運(yùn)行模式概述
Spark編程模型回顧
Spark編程模型幾大要素
● Driver Program
● 輸入-?Transformation-?Action
● 緩存
● 共享變量
RDD的五大特征
● 分區(qū)--- partitions
● 依賴--- dependencies()
● 計(jì)算函數(shù)--- computer(p,context)
● 分區(qū)策略(Pair RDD)-- partitioner()
● 本地性策略--- preferredLocations(p)
Spark基本運(yùn)行流程
Application program的組成
● Job : 包含多個(gè)Task 組成的并行計(jì)算,跟Spark action對(duì)應(yīng)。
● Stage : Job 的調(diào)度單位,對(duì)應(yīng)于TaskSet 。
● TaskSet :一組關(guān)聯(lián)的、相互之間沒(méi)有shuffle 依賴關(guān)系的任務(wù)組成的任務(wù)集。
● Task : 被送到某個(gè)executor 上的工作單元
運(yùn)行流程概述:
具體流程(以standalone模式為例):
任務(wù)調(diào)度:
DAGScheduler
● 構(gòu)建Stage—碰到shuffle就split
● 記錄哪個(gè)RDD 或者Stage 輸出被物化
● 重新提交shuffle 輸出丟失的stage
● 將Taskset 傳給底層調(diào)度器
● 本地性策略--- preferredLocations(p)
1.spark-cluster TaskScheduler
2.yarn-cluster YarnClusterScheduler
3.yarn-client YarnClientClusterScheduler
TaskScheduler
● 為每一個(gè)TaskSet 構(gòu)建一個(gè)TaskSetManager 實(shí)例管理這個(gè)TaskSet 的生命周期
● 數(shù)據(jù)本地性決定每個(gè)Task 最佳位置(process-local, node-local, rack-local and then and any
● 提交taskset( 一組task) 到集群運(yùn)行并監(jiān)控
● 推測(cè)執(zhí)行,碰到straggle 任務(wù)放到別的節(jié)點(diǎn)上重試
● 出現(xiàn)shuffle 輸出lost 要報(bào)告fetch failed 錯(cuò)誤
ScheduleBacked
● 實(shí)現(xiàn)與底層資源調(diào)度系統(tǒng)的交互(YARN,mesos等)
● 配合TaskScheduler實(shí)現(xiàn)具體任務(wù)執(zhí)行所需的資源分配(核心接口receiveOffers)
詳細(xì)過(guò)程:
實(shí)例分析
實(shí)例解析
val lines = ssc.textFile(args(1)) // 輸入
val words = lines.flatMap(x =>x.split(" "))
words.cache() // 緩存
val wordCounts = words.map(x =>(x, 1) )
val red = wordCounts.reduceByKey( (a,b)=>{a + b} , 8)
red.saveAsTextFile(“/root/Desktop/out” , 8) // 行動(dòng)
Spark運(yùn)行模式簡(jiǎn)介
Spark運(yùn)行模式列表
spark
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。