sparkcontext:spark 應用程式的入口,負責排程各個運算資源,協調各個 worker
node 上的 executor
rdd的action運算元觸發job的提交,提交到spark中的job生成rdd dag,由dagscheduler轉化為stage dag,每個stage中產生相應的task集合,taskscheduler將任務分發到executor執行。 每個任務對應相應的乙個資料塊,使用使用者定義的函式處理資料塊。在spark的底層實現中,通過rdd進行資料的管理,rdd中有一組分布在不同節點的資料塊,當spark的應用在對這個rdd進行操作時,排程器將包含操作的任務分發到指定的機器上執行,在計算節點通過多執行緒的方式執行任務。乙個操作執行完畢,rdd便轉換為另乙個rdd,這樣,使用者的操作依次執行。spark為了系統的記憶體不至於快速用完,使用延遲執行的方式執行,即只有操作累計到action(行動),運算元才會觸發整個操作序列的執行,中間結果不會單獨再重新分配記憶體,而是在同乙個資料塊上進行流水線操作。
spark實現了分布式計算和任務處理,並實現了任務的分發、跟蹤、執行等工作,最終聚合結果,完成spark應用的計算。
對rdd的塊管理通過blockmanger完成,blockmanager將資料抽象為資料塊,在記憶體或者磁碟進行儲存,如果資料不在本節點,則還可以通過遠端節點複製到本機進行計算。
在計算節點的執行器executor中會建立執行緒池,這個執行器將需要執行的任務通過執行緒池併發執行。
應用的提交包含以下兩種方式:
driver程序是應用的主控程序,負責應用的解析、切分stage並排程task到executor執行,包含dagscheduler等重要物件。
下面是具體的介紹:
使用者啟動客戶端,之後客戶端執行使用者程式,啟動driver程序。在driver中啟動或例項化dagscheduler等元件。 客戶端的driver向master註冊。worker向master註冊,master命令worker啟動exeuctor。worker通過建立executorrunner執行緒,在executorrunner執行緒內部啟動executorbackend程序。
executorbackend啟動後,向客戶端driver程序內的schedulerbackend註冊,這樣driver程序就能找到計算資源。driver的dagscheduler解析應用中的rdd dag並生成相應的stage,每個stage包含的taskset通過taskscheduler分配給executor。 在executor內部啟動執行緒池並行化執行task。
使用者啟動客戶端,客戶端提交應用程式給master。gitcafe部落格主頁(master排程應用,針對每個應用分發給指定的乙個worker啟動driver,即scheduler-backend。 worker接收到master命令後建立driverrunner執行緒,在driverrunner執行緒內建立schedulerbackend程序。driver充當整個作業的主控程序。master會指定其他worker啟動exeuctor,即executorbackend程序,提供計算資源。流程和上面很相似,worker建立executorrunner執行緒,executorrunner會啟動executorbackend程序。
executorbackend啟動後,向driver的schedulerbackend註冊,這樣driver獲取了計算資源就可以排程和將任務分發到計算節點執行。schedulerbackend程序中包含dagscheduler,它會根據rdd的dag切分stage,生成taskset,並排程和分發task到executor。對於每個stage的taskset,都會被存放到taskscheduler中。taskscheduler將任務分發到executor,執行多執行緒並行任務。
github部落格主頁(
csdn部落格(
google搜尋jasonding1354進入我的部落格主頁
Spark Spark應用執行機制
sparkcontext spark 應用程式的入口,負責排程各個運算資源,協調各個 worker node 上的 executor rdd的action運算元觸發job的提交,提交到spark中的job生成rdd dag,由dagscheduler轉化為stage dag,每個stage中產生相應...
Spark spark執行模式
一 standalone模式 1.standalone下的client模式 spark submit master spark node1 7077 class org.apache.spark.examples.sparkpi examples jars spark examples 2.11 2...
在MFC應用框架下執行狀態機
本文描述了使用鉤子技術在基於 windows 程式的mfc 應用框架下直接執行狀態機應用程式的方法。乙個典型的狀態自動機執行緒如下運作 smerun else break while 1 這種執行模式的缺點是我們必須為狀態自動機建立乙個單獨的執行緒。為了直接用基於程式的 mfc應用框架 執行狀態自動...