Class DeadNodeDetector

java.lang.Object
java.lang.Thread
org.apache.hadoop.util.Daemon
org.apache.hadoop.hdfs.DeadNodeDetector
All Implemented Interfaces:
Runnable

public class DeadNodeDetector extends org.apache.hadoop.util.Daemon
Detect the dead nodes in advance, and share this information among all the DFSInputStreams in the same client.
  • Field Details

    • LOG

      public static final org.slf4j.Logger LOG
  • Constructor Details

    • DeadNodeDetector

      public DeadNodeDetector(String name, org.apache.hadoop.conf.Configuration conf)
  • Method Details

    • work

      public void work()
      Overrides:
      work in class org.apache.hadoop.util.Daemon
    • shutdown

      public void shutdown()
      Shutdown all the threads.
    • isDeadNode

      public boolean isDeadNode(DatanodeInfo datanodeInfo)
    • getDeadNodesProbeQueue

      public org.apache.hadoop.hdfs.DeadNodeDetector.UniqueQueue<DatanodeInfo> getDeadNodesProbeQueue()
    • getSuspectNodesProbeQueue

      public org.apache.hadoop.hdfs.DeadNodeDetector.UniqueQueue<DatanodeInfo> getSuspectNodesProbeQueue()
    • addNodeToDetect

      public void addNodeToDetect(DFSInputStream dfsInputStream, DatanodeInfo datanodeInfo)
      Add datanode to suspectNodes and suspectAndDeadNodes.
    • clearAndGetDetectedDeadNodes

      public Set<DatanodeInfo> clearAndGetDetectedDeadNodes()
      Remove dead node which is not used by any DFSInputStream from deadNodes.
      Returns:
      new dead node shared by all DFSInputStreams.
    • removeNodeFromDeadNodeDetector

      public void removeNodeFromDeadNodeDetector(DFSInputStream dfsInputStream, DatanodeInfo datanodeInfo)
      Remove suspect and dead node from suspectAndDeadNodes#dfsInputStream and local deadNodes.