Master
Spark 特有資源調度系統的 Leader。掌管著整個集群的資源信息,類似于 Yarn 框架中的 ResourceManager,主要功能:
1. 監聽Worker,看 Worker 是否正常工作;
2. Master對Worker、Application等的管理(接受Worker的注冊并管所有的Worker,接受Client提交的Application,調度等待的Application并向Worker提交)
Worker
Spark 特有資源調度系統的 Slave,有多個。每個 Slave 掌管著所在節點的資源信息,類似于 Yarn 框架中的 NodeManager,主要功能:
1. 通過Register注冊到Master
2. 定時發心跳給Master
3.?根據Master 發送的 Application 配置進程環境,并啟動 ExecutorBackend(執行 Task 所需的臨時進程)
driver program(驅動程序)
每個Spark 應用程序都包含一個驅動程序, 驅動程序負責把并行操作發布到集群上.
驅動程序包含Spark 應用程序中的主函數, 定義了分布式數據集以應用在集群中.
在前面的wordcount案例集中, spark-shell 就是我們的驅動程序, 所以我們可以在其中鍵入我們任何想要的操作, 然后由他負責發布.
驅動程序通過SparkContext對象來訪問Spark,SparkContext對象相當于一個到Spark 集群的連接.
在spark-shell 中, 會自動創建一個SparkContext對象, 并把這個對象命名為sc.
executor(執行器)
SparkContext對象一旦成功連接到集群管理器, 就可以獲取到集群中每個節點上的執行器(executor).
執行器是一個進程(進程名: ExecutorBackend, 運行在 Worker節點上), 用來執行計算和為應用程序存儲數據.
然后, Spark 會發送應用程序代碼(比如:jar包)到每個執行器. 最后,SparkContext對象發送任務到執行器開始執行程序.
RDDs(Resilient Distributed Dataset)彈性分布式數據集
一旦擁有了SparkContext對象, 就可以使用它來創建 RDD 了. 在前面的文章中, 我們調用sc.textFile(...)來創建了一個RDD, 表示文件中的每一行文本. 我們可以對這些文本行運行各種各樣的操作.
cluster managers(集群管理器)
為了在一個Spark 集群上運行計算,SparkContext對象可以連接到幾種集群管理器(Spark’s own standalone cluster manager, Mesos or YARN).
集群管理器負責跨應用程序分配資源.