incStartedCountainerCount(); RoleInstance instance = getOwnedContainer(containerId); if (instance == null) { instance); instance.startTime = now(); this.lastAllocationTime = instance.startTime; RoleInstance starting = getStartingContainers().remove(containerId); if (null == starting) { throw new YarnRuntimeException( RoleStatus roleStatus = lookupRoleStatus(instance.roleId); roleStatus.incStarted(); Container container = instance.container; addLaunchedContainer(container, instance); return instance;
/** * set/update an owned container * @param id container ID * @param instance * @return */ private RoleInstance putOwnedContainer(ContainerId id, RoleInstance instance) { addLiveContainer(instance.group, id); return ownedContainers.put(id, instance); }
/** * Event handler for the list of active containers on restart. * Sets the info key {@link StatusKeys#INFO_CONTAINERS_AM_RESTART} * to the size of the list passed down (and does not set it if none were) * @param liveContainers the containers allocated * @return true if a rebuild took place (even if size 0) * @throws RuntimeException on problems */ private boolean rebuildModelFromRestart(List<Container> liveContainers) throws BadClusterStateException { if (liveContainers == null) { return false; } for (Container container : liveContainers) { addRestartedContainer(container); } clusterStatus.setInfo(StatusKeys.INFO_CONTAINERS_AM_RESTART, Integer.toString(liveContainers.size())); return true; }
@Override public NodeInformation getNodeInformation(String hostname) { return appState.getRoleHistory() .getNodeInformation(hostname, appState.buildNamingMap()); }
/** * The resource configuration is updated -review and update state. * @param resources updated resources specification * @return a list of any dynamically added provider roles * (purely for testing purposes) */ @VisibleForTesting public synchronized List<ProviderRole> updateResourceDefinitions(ConfTree resources) throws BadConfigException, IOException { log.debug("Updating resources to {}", resources); // snapshot the (possibly unresolved) values ConfTreeSerDeser serDeser = new ConfTreeSerDeser(); unresolvedInstanceDefinition.setResources( serDeser.fromInstance(resources)); // assign another copy under the instance definition for resolving // and then driving application size instanceDefinition.setResources(serDeser.fromInstance(resources)); onInstanceDefinitionUpdated(); // propagate the role table Map<String, Map<String, String>> updated = resources.components; getClusterStatus().roles = SliderUtils.deepClone(updated); getClusterStatus().updateTime = now(); return buildRoleRequirementsFromResources(); }
appState.setInitialInstanceDefinition(instanceDefinition); RMClientAccessForAppState rmClientAccess = new RMClientAccessForAppState( asyncRMClient); appState.setRMClientAccessForAppState(rmClientAccess); int maxMemory = maximumResourceCapability.getMemory(); int maxCores = maximumResourceCapability.getVirtualCores(); appState.setContainerLimits(minMemory,maxMemory, minCores, maxCores ); binding.releaseSelector = providerService.createContainerReleaseSelector(); binding.nodeReports = nodeReports; appState.buildInstance(binding); instanceDefinition.getName(), appState.getRolePriorityMap()); appState.buildAppMasterNode(appMasterContainerID, appMasterHostname, webAppPort, appState.noteAMLaunched();
setInitialInstanceDefinition(binding.instanceDefinition); buildRole(providerRole); continue; if (hasUniqueNames(resources, name)) { log.info("Skipping group {}", name); continue; ProviderRole dynamicRole = createDynamicProviderRole(name, resComponent); buildRole(dynamicRole); roleList.add(dynamicRole); buildRoleRequirementsFromResources(); NODE_FAILURE_THRESHOLD, DEFAULT_NODE_FAILURE_THRESHOLD); initClusterStatus(); rebuildModelFromRestart(binding.liveContainers);
for (RoleStatus roleStatus : getRoleStatusMap().values()) { if (roleStatus.isExcludeFromFlexing()) { String role = roleStatus.getName(); String roleGroup = roleStatus.getGroup(); int desiredInstanceCount = getDesiredInstanceCount(resources, roleGroup); if (hasUniqueNames(resources, roleGroup)) { Integer groupCount = 0; if (groupCounts.containsKey(roleGroup)) { if (hasUniqueNames(resources, name)) { int desiredInstanceCount = getDesiredInstanceCount(resources, name); Integer groupCount = 0; if (groupCounts.containsKey(name)) { int newPriority = getNewPriority(priority + i - 1); log.info("Adding new role {}", newName); MapOperations component = resources.getComponent(name, ProviderRole dynamicRole = createDynamicProviderRole(newName, name, component); RoleStatus roleStatus = buildRole(dynamicRole); roleStatus.setDesired(1); log.info("New role {}", roleStatus); ProviderRole dynamicRole = createDynamicProviderRole(name, component); RoleStatus roleStatus = buildRole(dynamicRole); roleStatus.setDesired(getDesiredInstanceCount(resources, name));
checkFailureThreshold(role); AMRMClient.ContainerRequest request = createAAContainerRequest(role); if (request != null) { pending--; log.info("Starting an anti-affine request sequence for {} nodes; pending={}", delta, pending); addContainerRequest(operations, request); } else { log.info("No location for anti-affine request"); addContainerRequest(operations, createContainerRequest(role)); List<RoleInstance> containersToRelease = enumNodesWithRoleId(roleId, true); if (containersToRelease.isEmpty()) { log.info("No containers for component {}", roleId); containerReleaseSubmitted(possible.container); operations.add(new ContainerReleaseOperation(possible.getId()));
final RoleStatus role = lookupRoleStatus(container); decOutstandingContainerRequests(); if (!addContainerRequest(operations, createAAContainerRequest(role))) { log.info("No capacity in cluster for new requests"); } else {
binding.fs = fs; binding.historyPath = historyPath; appState.buildInstance(binding); } catch (IOException | BadClusterStateException | URISyntaxException | BadConfigException e) { log.error("{}", e, e);
/** * Build up the requirements of every resource */ private void buildRoleResourceRequirements() { for (RoleStatus role : roleStatusMap.values()) { role.setResourceRequirements( buildResourceRequirements(role, recordFactory.newResource())); } }
appState.setInitialInstanceDefinition(instanceDefinition); RMClientAccessForAppState rmClientAccess = new RMClientAccessForAppState( asyncRMClient); appState.setRMClientAccessForAppState(rmClientAccess); int maxMemory = maximumResourceCapability.getMemory(); int maxCores = maximumResourceCapability.getVirtualCores(); appState.setContainerLimits(minMemory,maxMemory, minCores, maxCores ); binding.releaseSelector = providerService.createContainerReleaseSelector(); binding.nodeReports = nodeReports; appState.buildInstance(binding); instanceDefinition.getName(), appState.getRolePriorityMap()); appState.buildAppMasterNode(appMasterContainerID, appMasterHostname, webAppPort, appState.noteAMLaunched();
setInitialInstanceDefinition(binding.instanceDefinition); buildRole(providerRole); continue; if (hasUniqueNames(resources, name)) { log.info("Skipping group {}", name); continue; ProviderRole dynamicRole = createDynamicProviderRole(name, resComponent); buildRole(dynamicRole); roleList.add(dynamicRole); buildRoleRequirementsFromResources(); CONTAINER_HEALTH_THRESHOLD_PERCENT, DEFAULT_CONTAINER_HEALTH_THRESHOLD_PERCENT); initClusterStatus(); rebuildModelFromRestart(binding.liveContainers);
for (RoleStatus roleStatus : getRoleStatusMap().values()) { if (roleStatus.isExcludeFromFlexing()) { String role = roleStatus.getName(); String roleGroup = roleStatus.getGroup(); int desiredInstanceCount = getDesiredInstanceCount(resources, roleGroup); if (hasUniqueNames(resources, roleGroup)) { Integer groupCount = 0; if (groupCounts.containsKey(roleGroup)) { if (hasUniqueNames(resources, name)) { int desiredInstanceCount = getDesiredInstanceCount(resources, name); Integer groupCount = 0; if (groupCounts.containsKey(name)) { int newPriority = getNewPriority(priority + i - 1); log.info("Adding new role {}", newName); MapOperations component = resources.getComponent(name, ProviderRole dynamicRole = createDynamicProviderRole(newName, name, component); RoleStatus roleStatus = buildRole(dynamicRole); roleStatus.setDesired(1); log.info("New role {}", roleStatus); ProviderRole dynamicRole = createDynamicProviderRole(name, component); RoleStatus roleStatus = buildRole(dynamicRole); roleStatus.setDesired(getDesiredInstanceCount(resources, name));
checkFailureThreshold(role); AMRMClient.ContainerRequest request = createAAContainerRequest(role); if (request != null) { pending--; log.info("Starting an anti-affine request sequence for {} nodes; pending={}", delta, pending); addContainerRequest(operations, request); } else { log.info("No location for anti-affine request"); addContainerRequest(operations, createContainerRequest(role)); List<RoleInstance> containersToRelease = enumNodesWithRoleId(roleId, true); if (containersToRelease.isEmpty()) { log.info("No containers for component {}", roleId); containerReleaseSubmitted(possible.container); operations.add(new ContainerReleaseOperation(possible.getId()));
/** * The resource configuration is updated -review and update state. * @param resources updated resources specification * @return a list of any dynamically added provider roles * (purely for testing purposes) */ @VisibleForTesting public synchronized List<ProviderRole> updateResourceDefinitions(ConfTree resources) throws BadConfigException, IOException { log.debug("Updating resources to {}", resources); // snapshot the (possibly unresolved) values ConfTreeSerDeser serDeser = new ConfTreeSerDeser(); unresolvedInstanceDefinition.setResources( serDeser.fromInstance(resources)); // assign another copy under the instance definition for resolving // and then driving application size instanceDefinition.setResources(serDeser.fromInstance(resources)); onInstanceDefinitionUpdated(); // propagate the role table Map<String, Map<String, String>> updated = resources.components; getClusterStatus().roles = SliderUtils.deepClone(updated); getClusterStatus().updateTime = now(); return buildRoleRequirementsFromResources(); }
final RoleStatus role = lookupRoleStatus(container); decOutstandingContainerRequests(); if (!addContainerRequest(operations, createAAContainerRequest(role))) { log.info("No capacity in cluster for new requests"); } else {
@Override public Map<String, NodeInformation> getNodeInformationSnapshot() { return appState.getRoleHistory() .getNodeInformationSnapshot(appState.buildNamingMap()); }
binding.fs = fs; binding.historyPath = historyPath; appState.buildInstance(binding); } catch (IOException | BadClusterStateException | URISyntaxException | BadConfigException e) { log.error("{}", e, e);