Class SlowPeerTracker
java.lang.Object
org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerTracker
- Direct Known Subclasses:
SlowPeerDisabledTracker
This class aggregates information from
SlowPeerReports received via
heartbeats.-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSlowPeerTracker(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.util.Timer timer) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddReport(String slowNode, String reportingNode, org.apache.hadoop.hdfs.server.protocol.OutlierMetrics slowNodeMetrics) Add a new report.getJson()Retrieve all valid reports as a JSON string.Map<String,SortedSet<org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerLatencyWithReportingNode>> Retrieve all reports for all nodes.Set<org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerLatencyWithReportingNode>getReportsForNode(String slowNode) Retrieve the non-expired reports that mark a given DataNode as slow.getSlowNodes(int numNodes) Returns all tracking slow peers.booleanIf SlowPeerTracker is enabled, return true, else returns false.voidsetMaxSlowPeersToReport(int maxSlowPeersToReport)
-
Field Details
-
LOG
public static final org.slf4j.Logger LOG
-
-
Constructor Details
-
SlowPeerTracker
public SlowPeerTracker(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.util.Timer timer)
-
-
Method Details
-
isSlowPeerTrackerEnabled
public boolean isSlowPeerTrackerEnabled()If SlowPeerTracker is enabled, return true, else returns false.- Returns:
- true if slow peer tracking is enabled, else false.
-
addReport
public void addReport(String slowNode, String reportingNode, org.apache.hadoop.hdfs.server.protocol.OutlierMetrics slowNodeMetrics) Add a new report. DatanodeIds can be the DataNodeIds or addresses We don't care as long as the caller is consistent.- Parameters:
slowNode- DataNodeId of the peer suspected to be slow.reportingNode- DataNodeId of the node reporting on its peer.slowNodeMetrics- Aggregate latency metrics of slownode as reported by the reporting node.
-
getReportsForNode
public Set<org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerLatencyWithReportingNode> getReportsForNode(String slowNode) Retrieve the non-expired reports that mark a given DataNode as slow. Stale reports are excluded.- Parameters:
slowNode- target node Id.- Returns:
- set of reports which implicate the target node as being slow.
-
getReportsForAllDataNodes
public Map<String,SortedSet<org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerLatencyWithReportingNode>> getReportsForAllDataNodes()Retrieve all reports for all nodes. Stale reports are excluded.- Returns:
- map from SlowNodeId -> (set of nodes reporting peers).
-
getJson
Retrieve all valid reports as a JSON string.- Returns:
- serialized representation of valid reports. null if serialization failed.
-
getSlowNodes
Returns all tracking slow peers.- Parameters:
numNodes-- Returns:
-
setMaxSlowPeersToReport
public void setMaxSlowPeersToReport(int maxSlowPeersToReport)
-