[ 
https://issues.apache.org/jira/browse/HDFS-5168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13762003#comment-13762003
 ] 

Nikola Vujic commented on HDFS-5168:
------------------------------------

That's righ, Junping. This is for the case when VMs are running on shared 
storages. Title is a bit general and suggests cross rack and cross node group 
dependencies. Purpose is to use this more for cross node group dependencies as 
cross rack dependencies should be very unlikely. When VMs are attached on 
shared storage we can use node groups to group data nodes by either VM fault 
domain or storage fault domain. However one of the two fault domains cannot be 
handled and there we need cross node group dependencies. I agree with you that 
first approach makes more sence as the second one breaks some basic assumptions 
of Hadoop as you said. I'm working on a patch for the first approach and should 
provide it soon.

What do you think about generality for this patch, should it be as general as 
allowing cross rack dependencies or to be restriced to only cross node group 
dependencies? Thanks.


                
> BlockPlacementPolicy does not work for cross rack/node group dependencies
> -------------------------------------------------------------------------
>
>                 Key: HDFS-5168
>                 URL: https://issues.apache.org/jira/browse/HDFS-5168
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Nikola Vujic
>            Assignee: Nikola Vujic
>            Priority: Critical
>
> Block placement policies do not work for cross rack/node group dependencies. 
> In reality this is needed when compute servers and storage fall in two 
> independent fault domains, then both BlockPlacementPolicyDefault and 
> BlockPlacementPolicyWithNodeGroup are not able to provide proper block 
> placement.
> Let's suppose that we have Hadoop cluster with one rack with two servers, and 
> we run 2 VMs per server. Node group topology for this cluster would be:
>  server1-vm1 -> /d1/r1/n1
>  server1-vm2 -> /d1/r1/n1
>  server2-vm1 -> /d1/r1/n2
>  server2-vm2 -> /d1/r1/n2
> This is working fine as long as server and storage fall into the same fault 
> domain but if storage is in a different fault domain from the server, we will 
> not be able to handle that. For example, if storage of server1-vm1 is in the 
> same fault domain as storage of server2-vm1, then we must not place two 
> replicas on these two nodes although they are in different node groups.
> Two possible approaches:
> - One approach would be to define cross rack/node group dependencies and to 
> use them when excluding nodes from the search space. This looks as the 
> cleanest way to fix this as it requires minor changes in the 
> BlockPlacementPolicy classes.
> - Other approach would be to allow nodes to fall in more than one node group. 
> When we chose a node to hold a replica we have to exclude from the search 
> space all nodes from the node groups where the chosen node belongs. This 
> approach may require major changes in the NetworkTopology.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to