2) Before reducing the replication, I would like to make sure that no block in the same group located on the same datanode. I have been working on a tool (similar Balancer) to migrate blocks so that no block in the same group located on the same datanode.
I like this idea of migrating blocks. Is it possible that you can implement this on the current RAID project. That will be really helpful.
Plus, I am also working on porting RS codes from Jerasure (http://www.cs.utk.edu/~plank/plank/papers/CS-08-627.html), so it can support more than 2 parities.
We have also implemented a java version of RS code in
MAPREDUCE-1970. It has been deployed on our test cluster which holds 300TB of data.
In this patch, we have an interface for general erasure codes.
Maybe you can make your patch implements the same interface. So we can configure different codecs to use.
I think the encode/decode is more IO-bounded because the parity length we are using is really small comparing to the regular use cases of RS codes.