我們將以乙個spark streaming為例,閱讀spark相關原始碼,簡述spark on yarn客戶端模式下作業提交流程。作業是通過spark-submit指令碼提交的,因此整個流程從spark-submit**開始分析。若有錯誤,希望各位看官指出。
通過submit
獲取提交**的mainclass
通過反射機制utils.classforname
建立相關的類,並獲取其中的mainmethod
通過反射呼叫直接呼叫上一步獲得的mainmethod
,開始執行作業的main方法
把sparkconf
和批處理間隔做給引數建立乙個streamingcontext
類
createsparkenv
以sparkconf
和listenerbus
為引數呼叫createsparkenv
函式。其中,listenerbus
是spark中的***,包括jobprogresslistener
。在createsparkenv
呼叫的過程中,將呼叫sparkenv
物件的createdriverenv
成員函式,在這個過程中會建立乙個actorsystem
和乙個rpcenv
,生成乙個driver
,這將建立乙個sparkenv
物件,sparkenv
物件中將封裝諸如rpcenv
,actorsystem
,cachemanager
,mapoutputtracker
,shufflemanager
,broadcastmanager
,blockmanager
,memorymanager
等成員類,成員類的作用如下:
heartbeatreceiver
執行在driver
上的乙個類,負責接受來自executor
的心跳資訊。
以clientarguements
為引數,新建乙個client
類
reference
瘦客戶端 胖客戶端 智慧型客戶端
胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...
胖客戶端 瘦客戶端和富客戶端
以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...
非同步客戶端和同步客戶端
先寫下我的理解,方便後邊閱讀資料校驗。一 同步客戶端 比如乙個連線有兩個請求,請求1 和 請求2,請求1 先發起請求,請求2後發起請求,則請求2 要等待請求1 響應完成才能接收到響應。舉個棗子,httpclient 傳送get請求,執行緒會一致阻塞,直到有響應結果。二 非同步客戶端 比如乙個連線有兩...