Master在启动的时候,会调用LaunchDriver和LaunchExecutor方法,要求Worker启动Driver和Executor。
在Worker内部,接收到消息后,会调用DriverRunner,它的内部启动了一个线程,去创建Driver的工作目录,创建好工作目录后,封装启动Driver的命令,用ProcessBuilder启动Driver。Worker启动Driver的一个基本原理,最核心的就是Worker内部会启动一个线程,就是DriverRunner,然后DriverRunner会负责启动Driver进程,并在之后对Driver进程进行管理。
在Worker内部,接收到消息后,还会调用ExecutorRunner,它的内部启动了一个线程,去创建Executor的工作目录,创建好工作目录之后,封装启动Executor的命令,用ProcessBuilder启动Executor。
Executor启动起来后,会找到对应的Driver去注册自己。
Worker启动Executor,其实和Driver的原理是一致的,都是通过一个Worker内部的本地线程,也就是ExecutorRunner,去启动Executor进程,然后在之后对Executor进程进行管理。
Spark的worker运行分析
最新推荐文章于 2021-12-14 17:05:40 发布