1. 程式人生 > >spark系統架構與節點

spark系統架構與節點

spark 採用主從(master/slave)架構構建計算機叢集
其中client為提交spark程式的節點。其餘為spark分散式叢集中的物理節點,可以分為兩類,叢集管理節點(clustermaster)和從節點(slave)
clustermaster節點:clustermaster是整個叢集的核心,它並不執行實際的計算任務,而是負責管理整個叢集的計算資源(除clustermaster節點外其他物理主機的記憶體,cpu處理器等物理資源)這些計算資源都由clustermaster節點進行統一管理,並將資源合理地分配給使用者提交的各個應用程式。所有的計算節點都要向clustermaster節點進行註冊,將自身的計算資源交給clustermaster節點進行統一排程。clustermaster節點隨時監控瞭解這些註冊的節點的執行狀況,以便給應用程式提供合理的資源分配。需要注意的是,clustermaster節點是一個邏輯上的概念,當spark採用不同的模式執行時,clustermaster就對應這些模式中相應管理節點。例如,以standalone模式執行時,cluster節點就是執行master服務的節點。以yarn模式執行spark時,clustermaster節點為yarn中的resourcemanager節點,而以mesos執行spark時,對應的clustermaster節點則為mesos中的master節點。
slave節點:根據功能不同分為兩類:任務排程節點(driver)和任務執行節點(worker)區分這兩種節點的方法就是看slave節點執行著那種功能程序。
driver節點:執行spark程式main函式所在的程序。在spark叢集中,driver程序可以執行在提交spark程式的client節點上,也可以是某個worker節點。例如,當執行spark shell時。實際上啟動了一個spark程式,因此,我們的電腦就是driver節點。driver節點作為整個應用程式邏輯的起點,負責建立sparkcontext,定義一個或多個rdd,同時driver程序還可以看做是整個應用程式的大腦。driver主要負責兩方面的工作:(1)負責將一個應用程式分割為物理上可執行的任務(task),在spark中。task是物理上可執行的最小單元,一個應用程式可以啟動成百上千的獨立task。(2)對於應用程式所產生的task,driver程序將task任務分配到最合適的worker節點上執行,並協調這些task在worker上完成執行。
worker節點:執行executor程序的節點為worker節點,spark為每一應用程式在worker節點上建立一個executor程序,executor程序是實際物理任務的執行者。executor程序負責兩方面的工作:(1)負責執行組成應用程式的獨立task計算任務,並將執行的結果反饋給driver節點,(2)executor程序為rdd提供記憶體儲存