Spark學習(1)——組件介紹

一、架構圖

組件圖: 

架構圖:

 

二、組件介紹

1.Driver

driver是一個進程,我們編寫的spark程序運行在driver上,由dirver進程執行,driver是作業的主進程,具有main函數,是程序的入口點,driver進程啓動後,向master發送請求,進行註冊,申請資源,在後面的executor啓動後,會向dirver進行反註冊,dirver註冊了executor後,正式執行spark程序,讀取數據源,創建rdd或dataframe,生成stage,提交task到executor它會運行客戶端寫好的main方法,並且它會創建sparkcontext對象,該對象是所有spark程序的執行入口

sparkcontext:

  • SparkContext:整個應用的上下文,控制應用的生命週期。
  • RDD:Spark的基礎計算單元,一組RDD可形成執行的有向無環圖RDD Graph。
  • DAG Scheduler:根據作業(task)構建基於Stage的DAG,並提交Stage給TaskScheduler。
  • TaskScheduler:將任務(task)分發給Executor執行。
  • SparkEnv:線程級別的上下文, 存儲運行時的重要組件的引用。

2.Application
它就是一個應用程序,它包括了Driver端的代碼邏輯和任務在執行的時候需要的資源信息。
3.clusterManager   :它既是給當前任務提供計算資源的外部服務
     standAlone:
     它是spark自帶的集羣模式,整個任務的資源分配由master負責
      Yarn:
Spark程序可以提交到yarn中去運行,整個任務的資源分配由ResourceManager負責。
     Mesos:
     就是一個apache開源的類似於yarn的資源調度平臺
4.Master
     是個進程,它是整個spark集羣的老大,它負責資源的分配。
5.Worker
是個進程,它是整個spark集羣的小弟,主要負責兩個:一個是用自己的內存存儲RDD的某個或某些partition,另一個是啓動其他進程和線程,對RDD上的partition進行處理和計算
6.Excutor
 是一個進程,它會在worker節點上啓動對應的executor進程
7.task
是一個線程,具體的spark任務是在Task上運行的,它是以線程的方式運行在worker節點的executor進程中。

三、詳細流程介紹

流程圖:

 

1、Driver進程啓動之後,會進行一些初始化的操作,在這個過程中,會發送請求到master
2、Master,接收到Driver的註冊之後,發送請求給Worker,進行資源的調度和分配,也就是Executor的分配
3、Worker接收到master的請求,啓動Executor
4、Executor啓動之後,會向Driver進行反註冊
5、Driver註冊了Executor之後,正式開始執行Spark程序,首先讀取數據源,創建RDD
6、HDFS文件被讀取到多個Worker節點,形成RDD
7、在worker上生成RDD之後,Driver會根據我們對RDD定義的操作,提交相應數量的Task到Executor上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章