override def preStart() {
webUi = new WorkerWebUI(this, workDir, Some(webUiPort))
webUi.bind() //创建并绑定UI
registerWithMaster() //注册到Master
} def tryRegisterAllMasters() {
for (masterUrl <- masterUrls) {
logInfo("Connecting to master " + masterUrl + "...")
val actor = context.actorSelection(Master.toAkkaUrl(masterUrl))
actor ! RegisterWorker(workerId, host, port, cores, memory, webUi.boundPort, publicAddress)
}
}
Worker的主要功能:
1、向master注册
2、处理事件
RegisteredWorker/RegisterWorkerFailed
LaunchExecutor/ExecutorStateChanged/KillExecutor
LaunchDriver/KillDriver
WorkDirCleanup/MasterChanged/Heartbeat/DriverStateChanged/RequestWorkerState