- Application 指使用者編寫的Spark應用程式,其中包含了一個Driver功能的代碼和分布在叢集中多個節點上運作的Executor代碼。
- Driver Spark中的Driver即運作上述Application的main()函數并建立SparkContext.建立的目的是為了初始化Spark的運作環境。SparkContext負責與ClusterManager通信,進行資源的申請、任務的配置設定和監控等。當Executor部分運作完畢後,Driver同時負責将SparkContext關閉,通常用SparkContext代表Driver.
- Executor 某個Application運作在Worker節點上的一個程序,該程序負責運作某些Task,并且負責将資料存在記憶體或者磁盤上。每個Application都有各自獨立的一批Executor.在spark on Yarnm模式下,名為CoarseGrainedExecutor Backend程序有且隻有一個executor,它負責将task包裝秤taskRunner,并從線程池中抽取出一個空閑線程進行Task.這樣 每個CoarseGrainedExecutro Backend能并行運作Task的數量就取決于配置設定給它的CPU的個數。
- Cluster Manager 在Hadoop yarn上主要是指ResourceManager
- Worker:叢集中任何可以運作Application代碼的節點,類似于Yarn中的NodeManager節點,在Standalone模式中指的是通過slave檔案配置的Worker節點,在Spark on Yarn模式中指的是NodeManager節點。
- Task 是運作application的基本機關。多個Task組成一個stage,而Task的排程和管理等由下面的TaskScheduler負責。
- Job 包含多個Task組成的并行運算,往往由Spark Action觸發産生,一個Application中可能會産生多個job.
- Stage 每個job會被劃分為很多組Task,作為一個Taskset,名為stage.stage的劃分和排程由DAGScheduler負責。Stage有非最終的stage(Shuffle Map stage)和最終的Stage(Result stage)兩種。Stage的邊界就是發生Shuffle的地方.
- 共享變量 廣播變量和隻支援加法操作,可以實作求和的累加變量。
- 寬依賴 成為ShuffleDependency,與Hadoop Mapreduce中Shuffle的資料依賴相同,寬依賴需要計算好所有父RDD對應分區的資料,然後在節點之間進行Shuffle。
- 窄依賴 稱為NarrowDependency,指具體的RDD,其分區patition a 最多被子RDD中的一個分區patition b依賴。隻有map任務,不需要發生Shuffle過程。
- DAGScheduler 送出Stage給TaskScheduler.