1, 当Executor实例化的时候会通过BlockManager.initialize来实例化Executor上的BlockManager并且创建BlockManagerSlaveEndpoint这个消息循环体来接受Driver中的BlockManagerMaster发过来的指令,例如删除Block等;
env.blockManager.initialize(conf.getAppId)
2, 当BlockManagerSlaveEndpoint实例化后,Executor上的BlockManager需要向Driver上的BlockManagerMasterEndpoint注册:
master.registerBlockManager(blockManagerId, maxMemory, slaveEndpoint)
3, BlockManagerMasterEndpoint接收到Executor上的注册信息并进行处理:
case RegisterBlockManager(blockManagerId, maxMemSize, slaveEndpoint) =>
register(blockManagerId, maxMemSize, slaveEndpoint)
context.reply(true)
4,