Spark源碼剖析(五):Master原理與源碼剖析(下)

一. 狀態改變機制源碼分析

在剖析Master核心的資源調度算法以前,讓咱們先來看看Master的狀態改變機制。 算法

Driver狀態改變

Alt text 
能夠看出,一旦Driver狀態發生改變,基本沒有好事情,後果要麼是刪除Driver,要麼是報異常! 
  
removeDriver方法:app

Alt text

Executor狀態改變

Alt text

Alt text 
能夠看出,若是Executor時非正常退出,會嘗試從新調度(啓動)該Executor,直到該Application達到了最大的重試次數10次。 
  
removeApplication方法源碼分析

Alt text


二. 資源調度機制源碼分析(schedule方法)

  1. schedule方法的做用是爲當前等待分配資源的app分配可用的集羣資源,該方法會在新的app加入或者是可用資源改變時被調用。 
  2. 首先是調度Drivers(只有在yarn cluster模式下Driver才須要調度),隨機打亂AliveWorkers的Alt text

  1. 接下來咱們來調度Application(核心!),使用簡單的FIFO策略,調度算法分爲spreadOutApps和非spreadOutApps,spreadOutApps算法就是儘量平均的將總app cores分配到全部Worker節點,非spreadOutApps算法就是將總app cores分配到儘量少的Worker節點

Alt text

Alt text 
  
canUse()方法spa

Alt text 
  
launchExecutor方法code

Alt text

相關文章
相關標籤/搜索