【Flink提交流程源码】六、启动resouceManage

DefaultDispatcherResourceManagerComponentFactory

//resocueManage启动
resourceManager.start(); resourceManagerRetrievalService.start(resourceManagerGatewayRetriever); dispatcherLeaderRetrievalService.start(dispatcherGatewayRetriever);

 

RpcEndpoint 到rpc就断掉了需要到ResourceManager组件里面去找onStart

public final void start() {
		rpcServer.start();
	}

  

进入ResourceManager 

public final void onStart() throws Exception {
		try {
//resourceManage开启 startResourceManagerServices(); } catch (Throwable t) { final ResourceManagerException exception = new ResourceManagerException(String.format("Could not start the ResourceManager %s", getAddress()), t); onFatalError(exception); throw exception; } }

  

private void startResourceManagerServices() throws Exception {
		try {
			leaderElectionService = highAvailabilityServices.getResourceManagerLeaderElectionService();
//初始化   并启动yarn的resource和node的客户端
			initialize();
//通过选举服务启动resouceManage
			leaderElectionService.start(this);
// jobLeaderIdService.start(new JobLeaderIdActionsImpl()); registerTaskExecutorMetrics();

  

初始化进入实现

ActiveResourceManager

protected void initialize() throws ResourceManagerException {
		try {
//初始化 resourceManagerDriver.initialize( this, new GatewayMainThreadExecutor(), ioExecutor); } catch (Exception e) { throw new ResourceManagerException("Cannot initialize resource provider.", e); } }

  

进入

ResourceManagerDriver

void initialize(
		ResourceEventHandler<WorkerType> resourceEventHandler,
		ScheduledExecutor mainThreadExecutor,
		Executor ioExecutor) throws Exception;

  具体实现

 

 

进入

AbstractResourceManagerDriver

public final void initialize(
			ResourceEventHandler<WorkerType> resourceEventHandler,
			ScheduledExecutor mainThreadExecutor,
			Executor ioExecutor) throws Exception {
		this.resourceEventHandler = Preconditions.checkNotNull(resourceEventHandler);
		this.mainThreadExecutor = Preconditions.checkNotNull(mainThreadExecutor);
		this.ioExecutor = Preconditions.checkNotNull(ioExecutor);

		initializeInternal();
	}

  进入

YarnResourceManagerDriver
protected void initializeInternal() throws Exception {
		final YarnContainerEventHandler yarnContainerEventHandler = new YarnContainerEventHandler();
		try {
//创建resourceManage客户端 resourceManagerClient = yarnResourceManagerClientFactory.createResourceManagerClient( yarnHeartbeatIntervalMillis, yarnContainerEventHandler); resourceManagerClient.init(yarnConfig); resourceManagerClient.start(); final RegisterApplicationMasterResponse registerApplicationMasterResponse = registerApplicationMaster(); getContainersFromPreviousAttempts(registerApplicationMasterResponse); taskExecutorProcessSpecContainerResourcePriorityAdapter = new TaskExecutorProcessSpecContainerResourcePriorityAdapter( registerApplicationMasterResponse.getMaximumResourceCapability(), ExternalResourceUtils.getExternalResources(flinkConfig, YarnConfigOptions.EXTERNAL_RESOURCE_YARN_CONFIG_KEY_SUFFIX)); } catch (Exception e) { throw new ResourceManagerException("Could not start resource manager client.", e); } //创建nodeManage nodeManagerClient = yarnNodeManagerClientFactory.createNodeManagerClient(yarnContainerEventHandler); nodeManagerClient.init(yarnConfig);
//启动小弟nodeManage nodeManagerClient.start(); }

  

jobManage到此已经完成,下一个阶段小弟申请资源slot

posted @ 2021-06-21 15:59  持枢  阅读(168)  评论(0)    收藏  举报