spark2.4.3源码分析-Master、Worker启动

2019-06-22  本文已影响0人  LancerLin_LX

总结

Master启动后会定时清理超时的Worker,Worker启动需要传入Master的地址信息,启动后会向Master注册其相关信息,内存、cpu核数等,然后定时向Master发送心跳,保证自己不被清理。


image.png

1.Master源码分析

1.查看${SPARK_HOME}/sbin/start-master.sh启动脚本

启动的是org.apache.spark.deploy.master.Master这个类,通过idea查看该类源码,从main方法开始看

2.Master源码查看

image.png
new Master,查看Master类,这里主要是保存Worker、Application、Driver等信息
image.png

onStart方法中主要是创建一个定时给自己发送信息的守护单线程定时器,然后定时发送信息,发送定时清理超时发送心跳的Woker,其实就是master保存了一个worker的时间戳

image.png
image.png
receive方法中查看master接收处理CheckForWorkerTimeOut
image.png
image.png

2.Worker源码分析

1.查看${SPARK_HOME}/sbin/start-worker.sh启动脚本

启动的是org.apache.spark.deploy.worker.Worker这个类,通过idea查看该类源码,从main方法开始看

2.Worker源码查看

跟查看Master源码一样,从main方法开始看


image.png

查看Worker类代码,跟master一样,创建一个守护单线程线程,定时给自己发送信息,执行相关操作,如向master发送心跳等。
与master不同的是,启动worker需要传入master的ip:port,这里是为了rpc通信,比如worker启动的时候,需要跟master通信,注册信息等。
下面那个看不懂,先截图留着,mark下。


image.png

Worker是管理Executors的,所以这里会有一些Worker保存的信息,如Executers、App信息等


image.png

onStart方法中,Worker启动,向registerWithMaster() master发送心跳


image.png image.png image.png

开始跟master RPC'通信


image.png

Worker 向Master发送RegisterWorker,主要是
RegisterWorker(id, workerHost, workerPort, workerRef, cores, memory, workerWebUiUrl, masterAddress),内存,cpu cores等信息。需要去Master源码中查看,Master接收到
Worker信息后,保存Worker信息,发送RegisteredWorker,告诉Worker保存成功


image.png

回到Worker中,查看RegisteredWorker,Worker注册成功后,定时发送心跳,报活


image.png
然后会发送自己所持有的executors、dirvers信息给master,master接受executors、drivers信息,判断是否有无用的executors,如果有无用的话,发送 KillExecutor、KillDriver 让worker kill 掉worker上的无用executors、drivers。
上一篇下一篇

猜你喜欢

热点阅读