1.Master(standalone):資源管理的主節(jié)點(diǎn)(進(jìn)程)管理Worker
2.Cluster Manager:在集群上獲取資源的外部服務(wù)(例如:standalone Mesos Yarn)
3.Worker Node(standalone):1.管理本地的core和memory資源2.啟動(dòng)Executor
4.Application:基于Spark的用戶程序,說白了就是寫的每一段代碼绰精。
5.Job:包含很多任務(wù)(Task)的并行計(jì)算,可以看作和action算子對(duì)應(yīng)堂湖。
6.Stage:一個(gè)job會(huì)被拆 分成很多組任務(wù)毫玖,每一組任務(wù)被稱為Stage侠碧,拆分的標(biāo)準(zhǔn)就是RDD的依賴關(guān)系斟或。
7.Task:thread處理任務(wù)的單元绍移。就是被拆分出的每一個(gè)任務(wù)艳悔,他是被送到某個(gè)Executor上的工作單元急凰。
8.Driver:驅(qū)動(dòng)進(jìn)程.分發(fā)task2.回收task處理結(jié)果
在資源層面(從上往下)
Master:主節(jié)點(diǎn)
worker:由master管理
Executor:(進(jìn)程)在worker上啟動(dòng)
Threadpool:(線程池)每一個(gè)Executor中都有,在里面可以運(yùn)行Task
從任務(wù)層面(從上往下)
Application:基于Spark的用戶程序猜年,說白了就是寫的每一段代碼
Job:每一個(gè)Application里由很多Job,Job的個(gè)數(shù)由Application決定
Stage:根據(jù)RDD的依賴關(guān)系切割成每一個(gè)Stage
Task:(線程)Stage切割成一組Task抡锈。一組Task組成Stage
每一個(gè)Task發(fā)動(dòng)到Threadpool中執(zhí)行,這樣任務(wù)層面和資源層面就結(jié)合起來了乔外。
Pipeline計(jì)算模式
這個(gè)Stage的并行度是3床三。Stage的并行度是由最后一個(gè)RDD的Partition個(gè)數(shù)決定的。Partition個(gè)數(shù)是由數(shù)據(jù)量的大小決定的杨幼。
RDD1到RDD3都是窄依賴撇簿,沒有發(fā)生shuffle因此是一個(gè)Stage。
每一個(gè)RDD的Partititon執(zhí)行算子
每一個(gè)task的計(jì)算邏輯是所有的Partition的計(jì)算邏輯以遞歸函數(shù)的展開式的形式整和起來的
task0:fun3(fun2(textfile(block1)))
task1:fun3(fun2(textfile(block2)))
task2:fun3(fun2(textfile(block3)))
RDD是不存儲(chǔ)數(shù)據(jù)的差购,它只是一個(gè)抽象的概念四瘫,RDD只是存儲(chǔ)了計(jì)算邏輯
因此
task0最好發(fā)送到對(duì)應(yīng)b1所在的節(jié)點(diǎn)
task1最好發(fā)送到對(duì)應(yīng)b2所在的節(jié)點(diǎn)
task2最好發(fā)送到對(duì)應(yīng)b3所在的節(jié)點(diǎn)