hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "dhruba borthakur (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-2834) ByteBuffer-based read API for DFSInputStream
Date Tue, 06 Mar 2012 06:35:03 GMT

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

dhruba borthakur commented on HDFS-2834:
----------------------------------------

In our own variant of hdfs, we have introduced a scatter-gather api in FSDataInputStream:

{code}

  public List<ByteBuffer> readFullyScatterGather(long position, int length)
    throws IOException {
    return ((PositionedReadable)in).readFullyScatterGather(position, length);
  }

{code}

This allows HDFS to return ByteBuffers all the way to the application. The above api, in turn,
invokes DFSClient.InputStream:

{code}

    /**
     * Read bytes starting from the specified position. This is optimized
     * for fast preads from an application with minimum of buffer copies.
     *
     * @param position start read from this position
     * @param length number of bytes to read
     *
     * @return A list of Byte Buffers that represent all the data that was
     * read from the underlying system.
     */
    @Override
    public List<ByteBuffer> readFullyScatterGather(long position, int length)
      throws IOException {

{code}

Some details here: http://bit.ly/zyDF0h

                
> ByteBuffer-based read API for DFSInputStream
> --------------------------------------------
>
>                 Key: HDFS-2834
>                 URL: https://issues.apache.org/jira/browse/HDFS-2834
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Henry Robinson
>            Assignee: Henry Robinson
>         Attachments: HDFS-2834-no-common.patch, HDFS-2834.3.patch, HDFS-2834.4.patch,
HDFS-2834.5.patch, HDFS-2834.6.patch, HDFS-2834.patch, HDFS-2834.patch, hdfs-2834-libhdfs-benchmark.png
>
>
> The {{DFSInputStream}} read-path always copies bytes into a JVM-allocated {{byte[]}}.
Although for many clients this is desired behaviour, in certain situations, such as native-reads
through libhdfs, this imposes an extra copy penalty since the {{byte[]}} needs to be copied
out again into a natively readable memory area. 
> For these cases, it would be preferable to allow the client to supply its own buffer,
wrapped in a {{ByteBuffer}}, to avoid that final copy overhead. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message