[
https://issues.apache.org/jira/browse/HDFS-7435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15025772#comment-15025772
]
Mingliang Liu commented on HDFS-7435:
-------------------------------------
In {{NNThroughputBenchmark}} class, the change
{code}
void formBlockReport() {
// fill remaining slots with blocks that do not exist
- for(int idx = blocks.size()-1; idx >= nrBlocks; idx--)
- blocks.set(idx, new Block(blocks.size() - idx, 0, 0));
- blockReportList = new BlockListAsLongs(blocks).getBlockListAsLongs();
+ for (int idx = blocks.size()-1; idx >= nrBlocks; idx--) {
+ Block block = new Block(blocks.size() - idx, 0, 0);
+ blocks.set(idx, new BlockReportReplica(block));
+ }
+ blockReportList = BlockListAsLongs.EMPTY;
{code}
Why the last line is not building the {{blockReportList}} using {{blocks}}
field as following?
{code}
blockReportList = BlockListAsLongs.encode(blocks);
{code}
I may need more context to understand this patch, while my goal is to work on
{{NNThroughputBenchmark}}. Thanks.
> PB encoding of block reports is very inefficient
> ------------------------------------------------
>
> Key: HDFS-7435
> URL: https://issues.apache.org/jira/browse/HDFS-7435
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: datanode, namenode
> Affects Versions: 2.0.0-alpha, 3.0.0
> Reporter: Daryn Sharp
> Assignee: Daryn Sharp
> Priority: Critical
> Fix For: 2.7.0
>
> Attachments: HDFS-7435.000.patch, HDFS-7435.001.patch,
> HDFS-7435.002.patch, HDFS-7435.patch, HDFS-7435.patch, HDFS-7435.patch,
> HDFS-7435.patch, HDFS-7435.patch, HDFS-7435.patch, HDFS-7435.patch,
> HDFS-7435.patch, HDFS-7435.patch
>
>
> Block reports are encoded as a PB repeating long. Repeating fields use an
> {{ArrayList}} with default capacity of 10. A block report containing tens or
> hundreds of thousand of longs (3 for each replica) is extremely expensive
> since the {{ArrayList}} must realloc many times. Also, decoding repeating
> fields will box the primitive longs which must then be unboxed.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)