Class SlowPeerTracker

java.lang.Object
org.apache.hadoop.hdfs.server.blockmanagement.SlowPeerTracker
Direct Known Subclasses:
SlowPeerDisabledTracker

@Private @Unstable public class SlowPeerTracker extends Object
This class aggregates information from SlowPeerReports received via heartbeats.
  • 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

      public String getJson()
      Retrieve all valid reports as a JSON string.
      Returns:
      serialized representation of valid reports. null if serialization failed.
    • getSlowNodes

      public List<String> getSlowNodes(int numNodes)
      Returns all tracking slow peers.
      Parameters:
      numNodes -
      Returns:
    • setMaxSlowPeersToReport

      public void setMaxSlowPeersToReport(int maxSlowPeersToReport)