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

Zhe Zhang commented on HDFS-11634:
----------------------------------

Thanks [~shv] for the patch and [~shahrs87] for the review. The idea looks good 
to me, it's a good improvement to skip entire storages.

I only have one concern/question:
{code}
      for (DatanodeStorageInfo e : storages) {
        iterators.add(e.getBlockIterator());
        int numBlocks = e.numBlocks();
        sumBlocks += numBlocks;
        if(sumBlocks <= startBlock) {
          index++;
          s -= numBlocks;
        }
      }
{code}

If a storage is skipped, should we still add it to the {{iterators}}?

> Optimize BlockIterator when interating starts in the middle.
> ------------------------------------------------------------
>
>                 Key: HDFS-11634
>                 URL: https://issues.apache.org/jira/browse/HDFS-11634
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>    Affects Versions: 2.6.5
>            Reporter: Konstantin Shvachko
>            Assignee: Konstantin Shvachko
>         Attachments: HDFS-11634.001.patch, HDFS-11634.002.patch, 
> HDFS-11634.003.patch, HDFS-11634.004.patch
>
>
> {{BlockManager.getBlocksWithLocations()}} needs to iterate blocks from a 
> randomly selected {{startBlock}} index. It creates an iterator which points 
> to the first block and then skips all blocks until {{startBlock}}. It is 
> inefficient when DN has multiple storages. Instead of skipping blocks one by 
> one we can skip entire storages. Should be more efficient on average.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to