There's no filesystem (i.e. client) level APIs to do this, but the Balancer tool of HDFS does exactly this. Reading its sources should let you understand what kinda calls you need to make to reuse the balancer protocol and achieve what you need.
In trunk, the balancer is at hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/balancer/Balancer.java HTH, and feel free to ask any relevant follow up questions. On Fri, Feb 22, 2013 at 11:43 PM, Karthiek C <karthi...@gmail.com> wrote: > Hi, > > Is there any APIs to move data blocks in HDFS from one node to another * > after* they have been added to HDFS? Also can we write some sort of > pluggable module (like scheduler) that controls how data gets placed in > hadoop cluster? I am working with hadoop-1.0.3 version and I couldn't find > any filesystem APIs available to do that. > > PS: I am working on a research project where we want to investigate how to > optimally place data in hadoop. > > Thanks, > Karthiek -- Harsh J