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

Rakesh R commented on HDFS-8786:
--------------------------------

Thanks [~jingzhao] for the reviews and good comments.

Could you please give few clarifications on first comment. I will take care 
other comments while preparing next patch. Thanks!

comment-2=> agreed, will update in next patch

comment-3=> agreed, will raise a follow-on jira and work on.

comment-4=> agreed, will update in next patch

 
bq. comment-1=> 1. Not all the decommissioning nodes can be later used as 
source nodes, since we still need to consider DataNode's current load etc. Thus 
I'm not sure the calculation is correct here. In the meanwhile, I do not think 
we should adjust additionalReplRequired: there is no need to leave 
decommissioning nodes to the next round. Thus looks like we do not need this 
change.

{{getAdditionalReplRequired()}} count/value is used while choosing the required 
number of target nodes logic as shown below and these target nodes will be 
given to reconstruction or replication tasks. The new calculation in my patch 
is adjusting the additional replication required by ignoring the 
decommissioning count, so that the target nodes for these will not be chosen 
later. Here the idea is, will schedule decommissioning replication task only if 
there are no other cases like, under replcias or needed a rack  etc. Again 
ErasureCodingWork will schedule replication task for decommissioning only if 
the block group has {{#hasAllInternalBlocks}}. IIUC correctly your [previous 
comment|https://issues.apache.org/jira/browse/HDFS-8786?focusedCommentId=15174447&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15174447]
 also pointing to this ignore the decommssioning if any other tasks exists. I 
think the existing {{BlockManager#chooseSourceDatanodes}} is sufficient for 
source selection, am I missing anything?

{code}
case-1) 9 live replicas on 5 racks and 1 decommissioning replica
Choose 1 target for rack replication task and ignore decommissioning 
replication task

case-2) 7 live replicas, 1 under replica and 1 decommissioning replica
Choose 1 target for reconstruction task and ignore decommissioning replication 
task

case-3) 6 live replicas, 2 under replica and 1 decommissioning replica
Choose 2 target for reconstruction task and ignore decommissioning replication 
task

case-4) 8 live replicas and 1 decommissioning replica
Choose 1 target for decommissioning replication task

case-5) 7 live replicas and 2 decommissioning replica
Choose 2 target for decommissioning replication task
{code}

{code}
ErasureCodingWork.java:-
  void chooseTargets(BlockPlacementPolicy blockplacement,
      BlockStoragePolicySuite storagePolicySuite,
      Set<Node> excludedNodes) {
    //....
    DatanodeStorageInfo[] chosenTargets = blockplacement.chooseTarget(
        getBc().getName(), getAdditionalReplRequired(), getSrcNodes()[0],
        getLiveReplicaStorages(), false, excludedNodes,
        getBlock().getNumBytes(),
        storagePolicySuite.getPolicy(getBc().getStoragePolicyID()));
                

ReplicationWork.java:-
void chooseTargets(BlockPlacementPolicy blockplacement,
      BlockStoragePolicySuite storagePolicySuite,
      Set<Node> excludedNodes) {
          //....
      DatanodeStorageInfo[] chosenTargets = blockplacement.chooseTarget(
          getBc().getName(), getAdditionalReplRequired(), getSrcNodes()[0],
          getLiveReplicaStorages(), false, excludedNodes,
          getBlock().getNumBytes(),
          storagePolicySuite.getPolicy(getBc().getStoragePolicyID()));  
{code}


> Erasure coding: DataNode should transfer striped blocks before being 
> decommissioned
> -----------------------------------------------------------------------------------
>
>                 Key: HDFS-8786
>                 URL: https://issues.apache.org/jira/browse/HDFS-8786
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>            Reporter: Zhe Zhang
>            Assignee: Rakesh R
>         Attachments: HDFS-8786-001.patch, HDFS-8786-002.patch, 
> HDFS-8786-003.patch, HDFS-8786-004.patch, HDFS-8786-draft.patch
>
>
> Per [discussion | 
> https://issues.apache.org/jira/browse/HDFS-8697?focusedCommentId=14609004&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14609004]
>  under HDFS-8697, it's too expensive to reconstruct block groups for decomm 
> purpose.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to