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

David Mollitor edited comment on HDFS-13157 at 8/29/19 9:55 PM:
----------------------------------------------------------------

Yup.  That's how I plan on improving this:

 {code:java|title=DatanodeDescriptor.java}
    private void update() {
      while(index < iterators.size() - 1 && !iterators.get(index).hasNext()) {
        index++;
      }
    }
{code}

https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java#L617-L621

I'm going to round-robin this iterator.  Each call to {{next()}} on this 
{{BlockIterator()}} will call {{next()}} cyclically on the list of available 
{{Iterator}}-s until they are all exhausted instead of draining each 
{{Iterator}} in order.
 
I just need to see what else might be using this Iterator and see if the other 
places need this linear behavior.


was (Author: belugabehr):
Yup.  That's how I plan on improving this:

 {code:java|title=DatanodeDescriptor.java}
    private void update() {
      while(index < iterators.size() - 1 && !iterators.get(index).hasNext()) {
        index++;
      }
    }
{code}

https://github.com/apache/hadoop/blob/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java#L617-L621

I'm going to round-robin this iterator.  Each call to {{next()}} on this 
{{BlockIterator()}} will call {{next()}} cyclically on the list of available 
{{Iterator}}s until they are all exhausted instead of draining each 
{{Iterator}} in order.
 
I just need to see what else might be using this Iterator and see if the other 
places need this linear behavior.

> Do Not Remove Blocks Sequentially During Decommission 
> ------------------------------------------------------
>
>                 Key: HDFS-13157
>                 URL: https://issues.apache.org/jira/browse/HDFS-13157
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: datanode, namenode
>    Affects Versions: 3.0.0
>            Reporter: David Mollitor
>            Assignee: David Mollitor
>            Priority: Major
>
> From what I understand of [DataNode 
> decommissioning|https://github.com/apache/hadoop/blob/42a1c98597e6dba2e371510a6b2b6b1fb94e4090/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeAdminManager.java]
>  it appears that all the blocks are scheduled for removal _in order._. I'm 
> not 100% sure what the ordering is exactly, but I think it loops through each 
> data volume and schedules each block to be replicated elsewhere. The net 
> affect is that during a decommission, all of the DataNode transfer threads 
> slam on a single volume until it is cleaned out. At which point, they all 
> slam on the next volume, etc.
> Please randomize the block list so that there is a more even distribution 
> across all volumes when decommissioning a node.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to