code: void startDecommission(DatanodeDescriptor node)
      throws IOException {
      if (!node.isDecommissionInProgress() && !node.isDecommissioned()) {
        LOG.info("Start Decommissioning node " + node.getName() + " with " + 
            node.numBlocks() +  " blocks.");
        
        synchronized (heartbeats) {
          updateStats(node, false);
          node.startDecommission();
          updateStats(node, true);
        }
        if (((Monitor) dnthread.getRunnable()).startDecommision(node)) {
          node.setStartTime(now());
        }
      } else if (node.isDecommissionInProgress()) {
        if (((Monitor) dnthread.getRunnable()).startDecommision(node)) {
          node.setStartTime(now());
        }
      }
    }
docs: Start decommissioning the specified datanode.