Class CommonNodeLabelsManager
java.lang.Object
org.apache.hadoop.service.AbstractService
org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager
- All Implemented Interfaces:
Closeable,AutoCloseable,org.apache.hadoop.service.Service
@Private
public class CommonNodeLabelsManager
extends org.apache.hadoop.service.AbstractService
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classAHostcan have multipleNodesprotected static classNested classes/interfaces inherited from interface org.apache.hadoop.service.Service
org.apache.hadoop.service.Service.STATE -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringprotected Dispatcherstatic final Set<org.apache.hadoop.yarn.api.records.NodeLabel>protected ConcurrentMap<String,RMNodeLabel> protected static final org.slf4j.Loggerstatic final StringIf a user doesn't specify label of a queue or node, it belongs DEFAULT_LABELstatic final StringError messagesprotected ConcurrentMap<String,CommonNodeLabelsManager.Host> protected RMNodeLabelprotected final ReentrantReadWriteLock.ReadLockprotected NodeLabelsStorestatic final intprotected final ReentrantReadWriteLock.WriteLock -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddLabelsToNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> addedLabelsToNode) add more labels to nodes.voidaddToCluserNodeLabels(Collection<org.apache.hadoop.yarn.api.records.NodeLabel> labels) voidAdd multiple node labels to repository.protected voidcheckAddLabelsToNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> addedLabelsToNode) protected voidcheckRemoveFromClusterNodeLabels(Collection<String> labelsToRemove) protected voidcheckRemoveLabelsFromNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> removeLabelsFromNode) protected voidcheckReplaceLabelsOnNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> replaceLabelsToNode) protected voidcreateHostIfNonExisted(String hostName) protected voidcreateNodeIfNonExisted(org.apache.hadoop.yarn.api.records.NodeId nodeId) Get existing valid labels in repositoryList<org.apache.hadoop.yarn.api.records.NodeLabel>getLabelsByNode(org.apache.hadoop.yarn.api.records.NodeId nodeId) getLabelsByNode(org.apache.hadoop.yarn.api.records.NodeId nodeId, Map<String, CommonNodeLabelsManager.Host> map) Set<org.apache.hadoop.yarn.api.records.NodeLabel>getLabelsInfoByNode(org.apache.hadoop.yarn.api.records.NodeId nodeId) Get mapping of labels to nodes for all the labels.getLabelsInfoToNodes(Set<String> labels) Get mapping of labels info to nodes for specified set of labels.Get mapping of labels to nodes for all the labels.getLabelsToNodes(Set<String> labels) Get mapping of labels to nodes for specified set of labels.protected CommonNodeLabelsManager.NodegetNMInNodeSet(org.apache.hadoop.yarn.api.records.NodeId nodeId) protected CommonNodeLabelsManager.NodegetNMInNodeSet(org.apache.hadoop.yarn.api.records.NodeId nodeId, Map<String, CommonNodeLabelsManager.Host> map) protected CommonNodeLabelsManager.NodegetNMInNodeSet(org.apache.hadoop.yarn.api.records.NodeId nodeId, Map<String, CommonNodeLabelsManager.Host> map, boolean checkRunning) Get mapping of nodes to labelsGet mapping of nodes to label infoSet<org.apache.hadoop.yarn.api.records.NodeId>Get nodes that have no labels.protected voidprotected voidinitDispatcher(org.apache.hadoop.conf.Configuration conf) protected voidinitNodeLabelStore(org.apache.hadoop.conf.Configuration conf) protected voidinternalRemoveFromClusterNodeLabels(Collection<String> labelsToRemove) protected voidinternalUpdateLabelsOnNodes(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> nodeToLabels, org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager.NodeLabelUpdateOperation op) booleanbooleanisExclusiveNodeLabel(String nodeLabel) protected booleanprotected booleanisNodeLabelExplicit(org.apache.hadoop.yarn.api.records.NodeId nodeId) protected StringnormalizeLabel(String label) normalizeNodeIdToLabels(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> nodeIdToLabels) voidremoveFromClusterNodeLabels(Collection<String> labelsToRemove) Remove multiple node labels from repositoryvoidremoveLabelsFromNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> removeLabelsFromNode) remove labels from nodes, labels being removed most be contained by these nodes.protected voidremoveLabelsFromNodeInHost(org.apache.hadoop.yarn.api.records.NodeId node, Set<String> labels) protected voidremoveNodeFromLabels(org.apache.hadoop.yarn.api.records.NodeId node, Set<String> labels) voidreplaceLabelsOnNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> replaceLabelsToNode) replace labels to nodesprotected voidserviceInit(org.apache.hadoop.conf.Configuration conf) protected voidprotected voidvoidsetInitNodeLabelStoreInProgress(boolean initNodeLabelStoreInProgress) protected voidprotected voidMethods inherited from class org.apache.hadoop.service.AbstractService
close, getBlockers, getConfig, getFailureCause, getFailureState, getLifecycleHistory, getName, getServiceState, getStartTime, init, isInState, noteFailure, putBlocker, registerGlobalListener, registerServiceListener, removeBlocker, setConfig, start, stop, toString, unregisterGlobalListener, unregisterServiceListener, waitForServiceToStop
-
Field Details
-
LOG
protected static final org.slf4j.Logger LOG -
EMPTY_STRING_SET
-
EMPTY_NODELABEL_SET
-
ANY
- See Also:
-
ACCESS_ANY_LABEL_SET
-
WILDCARD_PORT
public static final int WILDCARD_PORT- See Also:
-
NODE_LABELS_NOT_ENABLED_ERR
Error messages- See Also:
-
NO_LABEL
If a user doesn't specify label of a queue or node, it belongs DEFAULT_LABEL- See Also:
-
dispatcher
-
labelCollections
-
nodeCollections
-
noNodeLabel
-
readLock
-
writeLock
-
store
-
-
Constructor Details
-
CommonNodeLabelsManager
public CommonNodeLabelsManager()
-
-
Method Details
-
handleStoreEvent
-
initDispatcher
protected void initDispatcher(org.apache.hadoop.conf.Configuration conf) -
serviceInit
- Overrides:
serviceInitin classorg.apache.hadoop.service.AbstractService- Throws:
Exception
-
isInitNodeLabelStoreInProgress
protected boolean isInitNodeLabelStoreInProgress()- Returns:
- the isStartup
-
isCentralizedConfiguration
public boolean isCentralizedConfiguration()- Returns:
- true if node label configuration type is not distributed.
-
initNodeLabelStore
- Throws:
Exception
-
startDispatcher
protected void startDispatcher() -
serviceStart
- Overrides:
serviceStartin classorg.apache.hadoop.service.AbstractService- Throws:
Exception
-
stopDispatcher
protected void stopDispatcher() -
serviceStop
- Overrides:
serviceStopin classorg.apache.hadoop.service.AbstractService- Throws:
Exception
-
addToCluserNodeLabels
public void addToCluserNodeLabels(Collection<org.apache.hadoop.yarn.api.records.NodeLabel> labels) throws IOException - Throws:
IOException
-
addToCluserNodeLabelsWithDefaultExclusivity
@VisibleForTesting public void addToCluserNodeLabelsWithDefaultExclusivity(Set<String> labels) throws IOException Add multiple node labels to repository.- Parameters:
labels- new node labels added- Throws:
IOException- io error occur.
-
checkAddLabelsToNode
protected void checkAddLabelsToNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> addedLabelsToNode) throws IOException- Throws:
IOException
-
addLabelsToNode
public void addLabelsToNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> addedLabelsToNode) throws IOExceptionadd more labels to nodes.- Parameters:
addedLabelsToNode- node -> labels map- Throws:
IOException- io error occur.
-
checkRemoveFromClusterNodeLabels
protected void checkRemoveFromClusterNodeLabels(Collection<String> labelsToRemove) throws IOException - Throws:
IOException
-
internalRemoveFromClusterNodeLabels
-
removeFromClusterNodeLabels
Remove multiple node labels from repository- Parameters:
labelsToRemove- node labels to remove- Throws:
IOException- io error occur.
-
checkRemoveLabelsFromNode
protected void checkRemoveLabelsFromNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> removeLabelsFromNode) throws IOException- Throws:
IOException
-
removeNodeFromLabels
-
removeLabelsFromNodeInHost
protected void removeLabelsFromNodeInHost(org.apache.hadoop.yarn.api.records.NodeId node, Set<String> labels) throws IOException - Throws:
IOException
-
isNodeLabelExplicit
protected boolean isNodeLabelExplicit(org.apache.hadoop.yarn.api.records.NodeId nodeId) -
internalUpdateLabelsOnNodes
protected void internalUpdateLabelsOnNodes(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> nodeToLabels, org.apache.hadoop.yarn.nodelabels.CommonNodeLabelsManager.NodeLabelUpdateOperation op) throws IOException- Throws:
IOException
-
removeLabelsFromNode
public void removeLabelsFromNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> removeLabelsFromNode) throws IOExceptionremove labels from nodes, labels being removed most be contained by these nodes.- Parameters:
removeLabelsFromNode- node -> labels map- Throws:
IOException- io error occur.
-
checkReplaceLabelsOnNode
protected void checkReplaceLabelsOnNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> replaceLabelsToNode) throws IOException- Throws:
IOException
-
replaceLabelsOnNode
public void replaceLabelsOnNode(Map<org.apache.hadoop.yarn.api.records.NodeId, Set<String>> replaceLabelsToNode) throws IOExceptionreplace labels to nodes- Parameters:
replaceLabelsToNode- node -> labels map- Throws:
IOException- io error occur.
-
getNodeLabels
Get mapping of nodes to labels- Returns:
- nodes to labels map
-
getNodeLabelsInfo
public Map<org.apache.hadoop.yarn.api.records.NodeId,Set<org.apache.hadoop.yarn.api.records.NodeLabel>> getNodeLabelsInfo()Get mapping of nodes to label info- Returns:
- nodes to labels map
-
getNodesWithoutALabel
Get nodes that have no labels.- Returns:
- set of nodes with no labels
-
getLabelsToNodes
Get mapping of labels to nodes for all the labels.- Returns:
- labels to nodes map
-
getLabelsToNodes
public Map<String,Set<org.apache.hadoop.yarn.api.records.NodeId>> getLabelsToNodes(Set<String> labels) Get mapping of labels to nodes for specified set of labels.- Parameters:
labels- set of labels for which labels to nodes mapping will be returned.- Returns:
- labels to nodes map
-
getLabelsInfoToNodes
public Map<org.apache.hadoop.yarn.api.records.NodeLabel,Set<org.apache.hadoop.yarn.api.records.NodeId>> getLabelsInfoToNodes()Get mapping of labels to nodes for all the labels.- Returns:
- labels to nodes map
-
getLabelsInfoToNodes
public Map<org.apache.hadoop.yarn.api.records.NodeLabel,Set<org.apache.hadoop.yarn.api.records.NodeId>> getLabelsInfoToNodes(Set<String> labels) Get mapping of labels info to nodes for specified set of labels.- Parameters:
labels- set of nodelabels for which labels to nodes mapping will be returned.- Returns:
- labels to nodes map
-
getClusterNodeLabelNames
Get existing valid labels in repository- Returns:
- existing valid labels in repository
-
getClusterNodeLabels
-
isExclusiveNodeLabel
- Throws:
IOException
-
normalizeLabel
-
getNMInNodeSet
protected CommonNodeLabelsManager.Node getNMInNodeSet(org.apache.hadoop.yarn.api.records.NodeId nodeId) -
getNMInNodeSet
protected CommonNodeLabelsManager.Node getNMInNodeSet(org.apache.hadoop.yarn.api.records.NodeId nodeId, Map<String, CommonNodeLabelsManager.Host> map) -
getNMInNodeSet
protected CommonNodeLabelsManager.Node getNMInNodeSet(org.apache.hadoop.yarn.api.records.NodeId nodeId, Map<String, CommonNodeLabelsManager.Host> map, boolean checkRunning) -
getLabelsByNode
-
getLabelsByNode
protected Set<String> getLabelsByNode(org.apache.hadoop.yarn.api.records.NodeId nodeId, Map<String, CommonNodeLabelsManager.Host> map) -
getLabelsInfoByNode
public Set<org.apache.hadoop.yarn.api.records.NodeLabel> getLabelsInfoByNode(org.apache.hadoop.yarn.api.records.NodeId nodeId) -
createNodeIfNonExisted
protected void createNodeIfNonExisted(org.apache.hadoop.yarn.api.records.NodeId nodeId) throws IOException - Throws:
IOException
-
createHostIfNonExisted
-
normalizeNodeIdToLabels
-
setInitNodeLabelStoreInProgress
public void setInitNodeLabelStoreInProgress(boolean initNodeLabelStoreInProgress)
-