1. Application:Spark 的應用程序空盼,用戶提交后,Spark為App分配資源,將程序轉換并執(zhí)行晦溪,其中Application包含一個Driver program和若干Executor
2. SparkContext:Spark 應用程序的入口,負責創(chuàng)建dagSchduler挣跋,TaskScheduler三圆,SchedulerBackend,在實例化的過程中register當前程序給Master避咆;在運行過程中負責調度各個運算資源舟肉,協(xié)調各個 WorkerNode 上的Executor。
3. Driver Program:運行Application的main()函數(shù)并且創(chuàng)建SparkContext
4. Executor:是為Application運行在Worker node上的一個進程查库,通過線程池并發(fā)執(zhí)行和線程復用的方式路媚,負責具體task的執(zhí)行;并且負責將數(shù)據(jù)存在內存或者磁盤上膨报。每個Application都會申請各自的Executor來處理任務
5. Master:接收用戶提交的程序并發(fā)送指令給Worker為當前程序分配計算資源
6. Worker的解釋
a. 接受Master的指令磷籍,啟動或者殺掉Executor (通過一個Proxy為Executor Runner的對象實例來遠程啟動ExecutorBackend進行,ExecutorBacnend進程里面有Executor现柠,實際在工作的時候院领,會通過TaskRunner來封裝Task,然后從ThreadPool中獲取一條線程執(zhí)行Task够吩,執(zhí)行完成后線程被回收復用)
b. 接受Master的指令比然,啟動或者殺掉Driver
c. 報告Executor/Driver的狀態(tài)到Master
7. 算子:對RDD的操作。分為:
1)輸入算子
舉例(parallelize周循、makeRDD强法、textFile、hadoopFile湾笛、wholeTextFiles)
2)transformation算子
3)action算子饮怯,會觸發(fā)一次作業(yè)的提交,為客戶端輸出一個結果或者保存到外部文件系統(tǒng)
舉例 ?(count嚎研、collect蓖墅、reduce、take临扮、first论矾、fold、saveAsTextFile杆勇、saveAsHadoopFile)?
或者數(shù)據(jù)庫系統(tǒng)中(判斷依據(jù)是底層調用sc.runjob代碼)
4)控制算子(persist贪壳、checkpoint(切斷RDD之前的依賴關系))
8. job: rdd的一系列操作算子構成一個job,在excutor中執(zhí)行。
? ? ? ? action算子決定一個job的界限蚜退, 一個Job被拆分成若干個Stage闰靴,每個Stage執(zhí)行一些計算彪笼,產生一些中間結果,最終生成這個Job的計算結果传黄。
9. Stage:每個Job會根據(jù)RDD的寬依賴關系被切分很多Stage杰扫, 每個Stage中包含一組相同的Task, 這一組Task也叫TaskSet
10.? Task:一個分區(qū)對應一個Task膘掰,Task執(zhí)行RDD中對應Stage中包含的算子章姓。Task被封裝好后放入Executor的線程池中執(zhí)行
11. DAGScheduler:根據(jù)Job構建基于Stage的DAG,并提交Stage給TaskScheduler
12. TaskScheduler:將Taskset提交給Worker node集群運行并返回結果