Spark 術語表
Application:應用程式
基於 Spark 構建的使用者程式,包含了 一個driver 程式和叢集上的 executors;(起了一個作業,就是一個Application)
Application jar:應用程式jar包
包含了使用者的 Spark 程式的一個 jar 包. 在某些情況下使用者可能想要建立一個囊括了應用及其依賴的 “胖” jar 包. 但實際上, 使用者的 jar 不應該包括 Hadoop 或是 Spark 的庫, 這些庫會在執行時被進行載入;
Driver Program:
這個程序執行應用程式的 main 方法並且新建 SparkContext ;
Cluster Manager:叢集管理者
在叢集上獲取資源的外部服務 (例如:standalone,Mesos,Yarn);(--master)
Deploy mode:部署模式
告訴你在哪裡啟動driver program. 在 “cluster” 模式下, 框架在叢集內部執行 driver. 在 “client” 模式下, 提交者在叢集外部執行 driver.;
Worker Node:工作節點
叢集中任何可以執行應用程式碼的節點;(yarn上就是node manager)
Executor:
在一個工作節點上為某應用啟動的一個程序,該程序負責執行任務,並且負責將資料存在記憶體或者磁碟上。每個應用都有各自獨立的 executors;
Task:任務
被送到某個 executor 上執行的工作單元;
Job:
包含很多平行計算的task。一個 action 就會產生一個job;
Stage:
一個 Job 會被拆分成多個task的集合,每個task集合被稱為 stage,stage之間是相互依賴的(就像 Mapreduce 分 map和 reducestages一樣),可以在Driver 的日誌上看到。
1個action會觸發1個job,1個job包含n個stage,每個stage包含n個task,n個task會送到n個executor上執行,一個Application是由一個driver 程式和n個 executor組成。提交的時候,通過Cluster Manager和Deploy mode控制。
spark應用程式在叢集上執行一組獨立的程序,通過SparkContext協調的在main方法裡面。
如果執行在一個叢集之上,SparkContext能夠連線各種的叢集管理者,去獲取到作業所需要的資源。一旦連線成功,spark在叢集節點之上執行executor程序,來給你的應用程式執行計算和儲存資料。它會發送你的應用程式程式碼到executors上。最後,SparkContext傳送tasks到executors上去執行
1、每個Application都有自己獨立的executor程序,這些程序在執行週期內都是常駐的以多執行緒的方式執行tasks。好處是每個程序無論是在排程還是執行都是相互獨立的。所以,這就意味著資料不能跨應用程式進行共享,除非寫到外部儲存系統(Alluxio)。
2、spark並不關心底層的叢集管理。
3、driver 程式會監聽並且接收外面的一些executor請求,在整個生命週期裡面。所以,driver 程式應該能被Worker Node通過網路訪問。
4、因為driver 在叢集上排程Tasks,driver 就應該靠近Worker Node。
【來自@若澤大資料】