spark工作節點之Worker原理剖析
這節我們講講Worker,Worker 計算資源的實際貢獻者,他要向Master彙報自身擁有多少cpu core和memory, 在master的指示下負責啟動executor,executor 是執行真正計算的苦力,由master來決定該程序擁有的core和memory數值,Master 掌管整個cluster的資源,主要是指cpu core和memory,但Master自身並不擁有這些資源,而Driver 是資源的實際佔用者,Driver會提交一到多個job,每個job在拆分成多個task之後,會分發到各個executor真正的執行。
下面讓我們來看看master, worker, driver, executor 之間是怎麼打交道:
下面直接進入原始碼分析:
首先讓我們從master開始看起:
master收到worker的註冊資訊後就會開始做出排程,進入schedule();
1.接下去看lauchDriver,會發現他向worker傳送資訊,要求worker啟動driver程序,然後我們緊接著到Worker類中,發現在launchDriver方法中,worker會new driverRunner,並且start。
2.然後再看看startExecutorsOnWorkers方法,一步一步跟下去,--> allocateWorkerResourceToExecutors --> launchExecutor ,然後worker收到資訊就開始new ExecutorRunner,然後start,最終會建立一個executor。
今天worker原始碼剖析就到這。
歡迎關注個人微信公眾號:BigData共享
文章來自:
https://mp.weixin.qq.com/s?__biz=MzU2NzA3OTEwMg==&tempkey=OTUzX1p1UzNGTm5oQjBsd3czV1dTZkxBUUc1c2dzTUlDcW1fR1hLWk8yUnN3SXNxa1JLS25McnJTSkw4aXNyN0hkSktmM3UxbjNTX1Vjc0w4QmFQRUNYeVczeVVZZ0dfWldmMnBhS1dyNjVMZkEtN3ZsMjg5bEh2Mi1ES2lHSlJaWWRyNVhHWS1ZR1duZmU5T0J1b0lVa3REb2phRXZHeXVwRUxmdFBfcEF%2Bfg%3D%3D&chksm=7ca3f8be4bd471a877fb0db4c55fee3e6fbc9c614425c44d0d49f829055228499facc3cb7494#rd