術語定義
Application: Spark Application的概念和Hadoop MapReduce中的類似,指的是用戶編寫的Spark應用程序,包含了一個Driver 功能的代碼和分布在集群中多個節點上運行的Executor代碼;
Driver: Spark中的Driver即運行上述Application的main()函數并且創建SparkContext,其中創建SparkContext的目的是為了準備Spark應用程序的運行環境。在Spark中由SparkContext負責和ClusterManager通信,進行資源的申請、任務的分配和監控等;當Executor部分運行完畢后,Driver負責將SparkContext關閉。通常用SparkContext代表Drive;
Executor: Application運行在Worker 節點上的一個進程,該進程負責運行Task,并且負責將數據存在內存或者磁盤上,每個Application都有各自獨立的一批Executor。在Spark on Yarn模式下,其進程名稱為CoarseGrainedExecutorBackend,類似于Hadoop MapReduce中的YarnChild。一個CoarseGrainedExecutorBackend進程有且僅有一個executor對象,它負責將Task包裝成taskRunner,并從線程池中抽取出一個空閑線程運行Task。每個CoarseGrainedExecutorBackend能并行運行Task的數量就取決于分配給它的CPU的個數了;
Cluster Manager:指的是在集群上獲取資源的外部服務,目前有:
Standalone:Spark原生的資源管理,由Master負責資源的分配;
Hadoop Yarn:由YARN中的ResourceManager負責資源的分配;
Worker:集群中任何可以運行Application代碼的節點,類似于YARN中的NodeManager節點。在Standalone模式中指的就是通過Slave文件配置的Worker節點,在Spark on Yarn模式中指的就是NodeManager節點;
作業(Job):包含多個Task組成的并行計算,往往由Spark Action催生,一個JOB包含多個RDD及作用于相應RDD上的各種Operation;
階段(Stage):每個Job會被拆分很多組Task,每組任務被稱為Stage,也可稱TaskSet,一個作業分為多個階段;
任務(Task): 被送到某個Executor上的工作任務;
序列化(Serialization):(來自維基百科)對于同步控制而言,表示強制在同一時間內進行單一存?。辉跀祿鎯εc傳送部分表示將一個對象存儲至另一個存儲介質中,當被還原時可被還原成完全相等的對象。相反的過程成為反序列化。其目的如下(也是其特點)
1、以某種存儲形式使自定義對象持久化;
2、將對象從一個地方傳遞到另一個地方。
3、使程序更具維護性。