hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daryn Sharp (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HDFS-7435) PB encoding of block reports is very inefficient
Date Mon, 24 Nov 2014 18:31:12 GMT

     [ https://issues.apache.org/jira/browse/HDFS-7435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Daryn Sharp updated HDFS-7435:
    Attachment: HDFS-7435.patch

Adds a backwards-compatible that is more efficient for the primitive long array.  Both array
re-allocs and the unnecessary boxing/unboxing of the longs is eliminated.

Datanode detects namenode version to determine if it should use the current repeating field
or a new more efficient buffer.  {{CodedOutputStream}} is used to explicitly encode the longs
into a buffer with # of longs followed by varint64 encoded longs.  

Namenode detects if datanode has sent old or new format.  If new format, it can immediately
allocate a long[] of the correct size and decode straight into it which eliminates both re-allocs
& unboxing overhead.

> 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

View raw message