code: DatanodeDescriptor[] chooseTarget(String srcPath,
                                      int numOfReplicas,
                                      DatanodeDescriptor writer,
                                      long blocksize) {
      return chooseTarget(srcPath, numOfReplicas, writer,
                          new ArrayList<DatanodeDescriptor>(),
                          blocksize);
    }
docs: choose <i>numOfReplicas</i> nodes for <i>writer</i> to replicate
  a block with size <i>blocksize</i>
  If not, return as many as we can.
  
  @param srcPath a string representation of the file for which chooseTarget is invoked
  @param numOfReplicas number of replicas wanted.
  @param writer the writer's machine, null if not in the cluster.
  @param blocksize size of the data to be written.
  @return array of DatanodeDescriptor instances chosen as targets
  and sorted as a pipeline.