Master会向Worker发送LaunchDriver和LaunchExecutor请求,要求Worker启动Driver和Executor。
Driver和Executor启动具体原理如图所示:
1.LaunchDriver:
在接收到LaunchDriver请求后,会去创建DriverRunner,由DriverRunner内部启动线程来创建Driver的工作目录,工作目录创建完成后,封装启动Driver的命令,用ProcessBuilder启动Driver(进程)。基本原理最核心的是:Worker内部会启动一个线程,由线程负责启动Driver进程,并在之后对Driver进程进行管理。
2.LaunchExecutor:
在接收到LaunchExecutor请求后,会去创建ExecutorRunner,由ExecutorRunner内部启动线程来创建Executor的工作目录,工作目录创建完成后,封装启动Executor的命令,用ProcessBuilder启动Executor(进程)。Executor进程找到对应的Driver后,去反向注册。基本原理最核心的是:与Driver类似,都是Worker内部会启动一个线程,由线程负责启动Executor进程,并在之后对Executor进程进行管理。