[ 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