spark中master原始碼分析(一)
(2)恢復完畢,重新建立driver,完成資源的重新分配
case completerecovery => completerecovery()詳見下①
②relaunchdriver方法如下,將driver的轉態為relaunching,新增到即將建立的driver列表中,然後重新分配資源
private def relaunchdriver(driver: driverinfo)
④ launchdriver方法如下,根據worker和driver資訊建立worker
private def launchdriver(worker: workerinfo, driver: driverinfo)
(3)觸發leadership的選舉
case revokedleadership =>
(4)master註冊新的worker,然後重新分配資源
case registerworker(
id, workerhost, workerport, workerref, cores, memory, workeruiport, publicaddress) => else if (idtoworker.contains(id)) else else }}
(7)driver轉態發生變化,進行相應的操作
case driverstatechanged(driverid, state, exception) =>
}
(8)心跳機制,通過該機制master和worker保持聯絡
case heartbeat(workerid, worker) => else }}
(12)通過worker是否超時,從而判斷worker是否dead
case checkforworkertimeout =>
Mybatis中Logging模組的原始碼分析
週末又來到了公司吹吹空調,順便記錄下mybatis的點點滴滴。首先mybatis不定義日誌系統,完全依賴於第三方系統完成日誌記錄,利用介面卡模式完成實際操作,原始碼如下 1 定義乙個log介面,具有如下方法 public inte ce log2 然後引入第三方日誌,比如 loggingimpl,實...
原 Spark中Client原始碼分析(二)
繼續前一篇的內容。前一篇內容為 spark中client原始碼分析 一 client中唯一的main方法如下 def main args array string val conf new sparkconf val driverargs new clientarguments args if dr...
原 Spark中Client原始碼分析(一)
下面我們重點看clientendpoint,它是執行緒安全的。registerwithmaster方法如下,用於非同步註冊到所有的master上,如果沒有超過再次註冊的次數 3次 那麼每20s將會重新呼叫該方法申請註冊,如果註冊成功,所有的呼叫work和futures將會被取消。private de...