@Override public void recover(InputStream is, CommonNodeLabelsManager mgr) throws IOException { nodeToLabels = new ReplaceLabelsOnNodeRequestPBImpl( YarnServerResourceManagerServiceProtos.ReplaceLabelsOnNodeRequestProto .parseDelimitedFrom(is)).getNodeToLabels(); if (mgr.isCentralizedConfiguration()) { mgr.replaceLabelsOnNode(nodeToLabels); } }
@Override public void addToCluserNodeLabels(Collection<NodeLabel> labels) throws IOException { try { writeLock.lock(); super.addToCluserNodeLabels(labels); } finally { writeLock.unlock(); } }
void printClusterNodeLabels() throws YarnException, IOException { List<NodeLabel> nodeLabels = null; if (accessLocal) { nodeLabels = new ArrayList<>(getNodeLabelManagerInstance(getConf()).getClusterNodeLabels()); } else { nodeLabels = new ArrayList<>(client.getClusterNodeLabels()); } sysout.println(String.format("Node Labels: %s", StringUtils.join(nodeLabels.iterator(), ","))); }
protected static synchronized CommonNodeLabelsManager getNodeLabelManagerInstance(Configuration conf) { if (localNodeLabelsManager == null) { localNodeLabelsManager = new CommonNodeLabelsManager(); localNodeLabelsManager.init(conf); localNodeLabelsManager.start(); } return localNodeLabelsManager; }
ReplaceLabelsOnNodeRequestProto.parseDelimitedFrom(is)) .getNodeToLabels(); mgr.addToCluserNodeLabels(labels); mgr.replaceLabelsOnNode(nodeToLabels); is.close(); AddToClusterNodeLabelsRequestProto.parseDelimitedFrom(is) .getNodeLabelsList(); mgr.addToCluserNodeLabels(Sets.newHashSet(labels.iterator())); break; RemoveFromClusterNodeLabelsRequestProto.parseDelimitedFrom(is) .getNodeLabelsList(); mgr.removeFromClusterNodeLabels(labels); break; ReplaceLabelsOnNodeRequestProto.parseDelimitedFrom(is)) .getNodeToLabels(); mgr.replaceLabelsOnNode(map); break; FSDataOutputStream os = fs.create(writingMirrorPath, true); ((AddToClusterNodeLabelsRequestPBImpl) AddToClusterNodeLabelsRequestPBImpl .newInstance(mgr.getClusterNodeLabels())).getProto().writeDelimitedTo(os); ((ReplaceLabelsOnNodeRequestPBImpl) ReplaceLabelsOnNodeRequest .newInstance(mgr.getNodeLabels())).getProto().writeDelimitedTo(os); os.close();
@Override public void recover(InputStream is, CommonNodeLabelsManager mgr) throws IOException { labels = YarnServerResourceManagerServiceProtos .RemoveFromClusterNodeLabelsRequestProto .parseDelimitedFrom(is).getNodeLabelsList(); mgr.removeFromClusterNodeLabels(labels); }
@Override public void replaceLabelsOnNode(Map<NodeId, Set<String>> replaceLabelsToNode) throws IOException { try { writeLock.lock(); // get nodesCollection before edition Map<String, Host> before = cloneNodeMap(replaceLabelsToNode.keySet()); super.replaceLabelsOnNode(replaceLabelsToNode); // get nodesCollection after edition Map<String, Host> after = cloneNodeMap(replaceLabelsToNode.keySet()); // update running nodes resources updateResourceMappings(before, after); } finally { writeLock.unlock(); } }
@Override public void recover(InputStream is, CommonNodeLabelsManager mgr) throws IOException { List<NodeLabel> labels = new AddToClusterNodeLabelsRequestPBImpl( YarnServerResourceManagerServiceProtos .AddToClusterNodeLabelsRequestProto .parseDelimitedFrom(is)).getNodeLabels(); mgr.addToCluserNodeLabels(labels); if (mgr.isCentralizedConfiguration()) { // Only load node to labels mapping while using centralized // configuration Map<NodeId, Set<String>> nodeToLabels = new ReplaceLabelsOnNodeRequestPBImpl( YarnServerResourceManagerServiceProtos .ReplaceLabelsOnNodeRequestProto .parseDelimitedFrom(is)).getNodeToLabels(); mgr.replaceLabelsOnNode(nodeToLabels); } }
@Override public void write(OutputStream os, CommonNodeLabelsManager mgr) throws IOException { ((AddToClusterNodeLabelsRequestPBImpl) AddToClusterNodeLabelsRequestPBImpl .newInstance(mgr.getClusterNodeLabels())).getProto() .writeDelimitedTo(os); if (mgr.isCentralizedConfiguration()) { ((ReplaceLabelsOnNodeRequestPBImpl) ReplaceLabelsOnNodeRequest .newInstance(mgr.getNodeLabels())).getProto().writeDelimitedTo(os); } }
localNodeLabelsManager.stop();
ReplaceLabelsOnNodeRequestProto.parseDelimitedFrom(is)) .getNodeToLabels(); mgr.addToCluserNodeLabels(labels); mgr.replaceLabelsOnNode(nodeToLabels); is.close(); AddToClusterNodeLabelsRequestProto.parseDelimitedFrom(is) .getNodeLabelsList(); mgr.addToCluserNodeLabels(Sets.newHashSet(labels.iterator())); break; RemoveFromClusterNodeLabelsRequestProto.parseDelimitedFrom(is) .getNodeLabelsList(); mgr.removeFromClusterNodeLabels(labels); break; ReplaceLabelsOnNodeRequestProto.parseDelimitedFrom(is)) .getNodeToLabels(); mgr.replaceLabelsOnNode(map); break; FSDataOutputStream os = fs.create(writingMirrorPath, true); ((AddToClusterNodeLabelsRequestPBImpl) AddToClusterNodeLabelsRequestPBImpl .newInstance(mgr.getClusterNodeLabels())).getProto().writeDelimitedTo(os); ((ReplaceLabelsOnNodeRequestPBImpl) ReplaceLabelsOnNodeRequest .newInstance(mgr.getNodeLabels())).getProto().writeDelimitedTo(os); os.close();
protected static synchronized CommonNodeLabelsManager getNodeLabelManagerInstance(Configuration conf) { if (localNodeLabelsManager == null) { localNodeLabelsManager = new CommonNodeLabelsManager(); localNodeLabelsManager.init(conf); localNodeLabelsManager.start(); } return localNodeLabelsManager; }
@Override public void removeFromClusterNodeLabels(Collection<String> labelsToRemove) throws IOException { try { writeLock.lock(); checkRemoveFromClusterNodeLabelsOfQueue(labelsToRemove); // copy before NMs Map<String, Host> before = cloneNodeMap(); super.removeFromClusterNodeLabels(labelsToRemove); updateResourceMappings(before, nodeCollections); } finally { writeLock.unlock(); } }
@Override public void replaceLabelsOnNode(Map<NodeId, Set<String>> replaceLabelsToNode) throws IOException { try { writeLock.lock(); // get nodesCollection before edition Map<String, Host> before = cloneNodeMap(replaceLabelsToNode.keySet()); super.replaceLabelsOnNode(replaceLabelsToNode); // get nodesCollection after edition Map<String, Host> after = cloneNodeMap(replaceLabelsToNode.keySet()); // update running nodes resources updateResourceMappings(before, after); } finally { writeLock.unlock(); } }
localNodeLabelsManager.stop();
protected static synchronized CommonNodeLabelsManager getNodeLabelManagerInstance(Configuration conf) { if (localNodeLabelsManager == null) { localNodeLabelsManager = new CommonNodeLabelsManager(); localNodeLabelsManager.init(conf); localNodeLabelsManager.start(); } return localNodeLabelsManager; }
@Override public void removeFromClusterNodeLabels(Collection<String> labelsToRemove) throws IOException { try { writeLock.lock(); checkRemoveFromClusterNodeLabelsOfQueue(labelsToRemove); // copy before NMs Map<String, Host> before = cloneNodeMap(); super.removeFromClusterNodeLabels(labelsToRemove); updateResourceMappings(before, nodeCollections); } finally { writeLock.unlock(); } }
@Override public void replaceLabelsOnNode(Map<NodeId, Set<String>> replaceLabelsToNode) throws IOException { try { writeLock.lock(); Map<NodeId, Set<String>> effectiveModifiedLabelMappings = getModifiedNodeLabelsMappings(replaceLabelsToNode); if(effectiveModifiedLabelMappings.isEmpty()) { LOG.info("No Modified Node label Mapping to replace"); return; } // get nodesCollection before edition Map<String, Host> before = cloneNodeMap(effectiveModifiedLabelMappings.keySet()); super.replaceLabelsOnNode(effectiveModifiedLabelMappings); // get nodesCollection after edition Map<String, Host> after = cloneNodeMap(effectiveModifiedLabelMappings.keySet()); // update running nodes resources updateResourceMappings(before, after); } finally { writeLock.unlock(); } }
/** * Add multiple node labels to repository * * @param labels * new node labels added */ @VisibleForTesting public void addToCluserNodeLabelsWithDefaultExclusivity(Set<String> labels) throws IOException { Set<NodeLabel> nodeLabels = new HashSet<NodeLabel>(); for (String label : labels) { nodeLabels.add(NodeLabel.newInstance(label)); } addToCluserNodeLabels(nodeLabels); }
void printClusterNodeLabels() throws YarnException, IOException { List<NodeLabel> nodeLabels = null; if (accessLocal) { nodeLabels = new ArrayList<>(getNodeLabelManagerInstance(getConf()).getClusterNodeLabels()); } else { nodeLabels = new ArrayList<>(client.getClusterNodeLabels()); } sysout.println(String.format("Node Labels: %s", StringUtils.join(nodeLabels.iterator(), ","))); }