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

Daryn Sharp commented on HDFS-7435:
-----------------------------------

While I agree it's a questionably nice to have feature - see below - decoding 
the block report into a contiguous or non-contiguous array is an implementation 
detail that can be changed in another jira w/o updating the layout version.

This patch simply undoes the damage caused by moving from Writables to PBs.   I 
changed it internally from long[] -> dynamically growing ArrayList<Long> -> PB 
-> dynamically growing ArrayList<Long> -> long[]; to simply fixed long[] -> PB 
-> fixed long[].   Further changes to segment the list in ways not previously 
done are feature creep.

If 20-30MB is going to cause a promotion failure in a namenode servicing a 
hundred millions of blocks - it's already game over.  2.x easily generates over 
1GB garbage/sec at a mere ~20k ops/sec.  That's an average of 54MB/request.  
This is why I'm submitting GC friendly changes.

> 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
>         Attachments: 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)

Reply via email to