Spark任務通過application id在Spark UI查看任務執(zhí)行狀態(tài),任務大多數(shù)以on yarn的形式提交到Spark集群。
1、定義:yarn是一種hadoop資源調(diào)度管理器,通用資源管理系統(tǒng)。為上層應用提供統(tǒng)一的資源調(diào)度和管理,在集群資源利用率、資源統(tǒng)一管理和數(shù)據(jù)共享上帶來了巨大好處。
2、基本設計思想:將Hadoop的JobTracker和TaskTracker分離,即資源管理和作業(yè)調(diào)度/監(jiān)控分為兩個組件,全局的ResourceManager與每個應用相關(guān)ApplicationMaster。
3、組成部分:1)一個全局的資源調(diào)度管理器ResourceManager? 2)ResourceManager的每個代理節(jié)點NodeManager 3)每個應用的ApplicationMaster 4)每個ApplicationMaster擁有多個Container在NodeManager上運行
4、執(zhí)行過程:1)用戶向Yarn提交應用程序,其中包括用戶程序,啟動ApplicationMaster命令等。2)ResourceManager為該應用分配第一個Container,并與對應的NodeManager通信,要求它啟動應用程序的ApplicationMaster。3)ApplicationMaster向ResourceManager注冊后,為各個任務申請資源,并監(jiān)控他們的狀態(tài),直到運行結(jié)束。4)ApplicationMaster采用輪詢的方式通過RPC協(xié)議向ResourceManager申請和領取資源。5)ApplicationMaster申請到資源后,便于對應的NodeManager通信,并要求它啟動任務。6)NodeManager為任務設置好運行環(huán)境(環(huán)境變量、jar包、二進制程序)后,將任務啟動命令寫到腳本中,通過運行腳本啟動任務。7)各個任務通過RPC協(xié)議向ApplicationMaster匯報自己的運行狀態(tài)和進度,在任務失敗時重新啟動任務。? 8)應用程序運行完成后,ApplicationMaster向ResourceManager注銷并關(guān)閉自己。
5 Yarn有三種調(diào)度器?
1)FIFO Scheduler,先進先出隊列,資源分配的時候,先給隊列中最頭上的應用分配資源。缺點:如果有一個應用占用了所有的集群資源,會導致其他應用阻塞。
2)Capacity Scheduler,會有一個專門的隊列用來運行小任務,但為小任務專門設置隊列就會預占一定的集群資源,會導致其執(zhí)行落后于FIFO Scheduler。
3)Fair Scheduler,會為所有的job動態(tài)調(diào)整系統(tǒng)資源。如果一個大job提交時,只有這一個job在運行,此時它獲得了所有集群資源。當?shù)诙€job提交時,F(xiàn)air調(diào)度器會分配一半資源給這個小任務,這兩個任務公平的共享集群資源,缺點,當?shù)诙€job提交時到獲取到資源有一定延遲,它需要等待第一個任務釋放占用的Container,小任務執(zhí)行完成后也會釋放自己占用的資源。最終效果就是Fair調(diào)度器得到了高的資源利用率的同時又能保證小任務及時完成。
搶占:當一個job提交的一個繁忙的集群的隊列時,job并不會馬上執(zhí)行,而是阻塞到正在運行的job使用系統(tǒng)資源,為了時提交job的時間更有預測性(可以設置等待超時時間),Fair調(diào)度器支持搶占。