術(shù)語(yǔ)定義
Application: Spark Application的概念和Hadoop MapReduce中的類(lèi)似奈嘿,指的是用戶編寫(xiě)的Spark應(yīng)用程序旁趟,包含了一個(gè)Driver 功能的代碼和分布在集群中多個(gè)節(jié)點(diǎn)上運(yùn)行的Executor代碼贾节;
Driver: Spark中的Driver即運(yùn)行上述Application的main()函數(shù)并且創(chuàng)建SparkContext袖肥,其中創(chuàng)建SparkContext的目的是為了準(zhǔn)備Spark應(yīng)用程序的運(yùn)行環(huán)境火欧。在Spark中由SparkContext負(fù)責(zé)和ClusterManager通信棋电,進(jìn)行資源的申請(qǐng)、任務(wù)的分配和監(jiān)控等苇侵;當(dāng)Executor部分運(yùn)行完畢后赶盔,Driver負(fù)責(zé)將SparkContext關(guān)閉。通常用SparkContext代表Drive衅檀;
Executor: Application運(yùn)行在Worker 節(jié)點(diǎn)上的一個(gè)進(jìn)程招刨,該進(jìn)程負(fù)責(zé)運(yùn)行Task,并且負(fù)責(zé)將數(shù)據(jù)存在內(nèi)存或者磁盤(pán)上哀军,每個(gè)Application都有各自獨(dú)立的一批Executor沉眶。在Spark on Yarn模式下,其進(jìn)程名稱為CoarseGrainedExecutorBackend杉适,類(lèi)似于Hadoop MapReduce中的YarnChild谎倔。一個(gè)CoarseGrainedExecutorBackend進(jìn)程有且僅有一個(gè)executor對(duì)象,它負(fù)責(zé)將Task包裝成taskRunner猿推,并從線程池中抽取出一個(gè)空閑線程運(yùn)行Task片习。每個(gè)CoarseGrainedExecutorBackend能并行運(yùn)行Task的數(shù)量就取決于分配給它的CPU的個(gè)數(shù)了;
Cluster Manager:指的是在集群上獲取資源的外部服務(wù)蹬叭,目前有:
Standalone:Spark原生的資源管理藕咏,由Master負(fù)責(zé)資源的分配;
Hadoop Yarn:由YARN中的ResourceManager負(fù)責(zé)資源的分配秽五;
Worker:集群中任何可以運(yùn)行Application代碼的節(jié)點(diǎn)孽查,類(lèi)似于YARN中的NodeManager節(jié)點(diǎn)。在Standalone模式中指的就是通過(guò)Slave文件配置的Worker節(jié)點(diǎn)坦喘,在Spark on Yarn模式中指的就是NodeManager節(jié)點(diǎn)盲再;
作業(yè)(Job):包含多個(gè)Task組成的并行計(jì)算西设,往往由Spark Action催生,一個(gè)JOB包含多個(gè)RDD及作用于相應(yīng)RDD上的各種Operation答朋;
階段(Stage):每個(gè)Job會(huì)被拆分很多組Task贷揽,每組任務(wù)被稱為Stage,也可稱TaskSet梦碗,一個(gè)作業(yè)分為多個(gè)階段禽绪;
任務(wù)(Task): 被送到某個(gè)Executor上的工作任務(wù);
序列化(Serialization):(來(lái)自維基百科)對(duì)于同步控制而言叉弦,表示強(qiáng)制在同一時(shí)間內(nèi)進(jìn)行單一存蓉ひ弧;在數(shù)據(jù)存儲(chǔ)與傳送部分表示將一個(gè)對(duì)象存儲(chǔ)至另一個(gè)存儲(chǔ)介質(zhì)中淹冰,當(dāng)被還原時(shí)可被還原成完全相等的對(duì)象。相反的過(guò)程成為反序列化巨柒。其目的如下(也是其特點(diǎn))
1樱拴、以某種存儲(chǔ)形式使自定義對(duì)象持久化;
2洋满、將對(duì)象從一個(gè)地方傳遞到另一個(gè)地方晶乔。
3、使程序更具維護(hù)性牺勾。