Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-8148

Zero-copy ByteBuffer-based compressor / decompressor API

    XMLWordPrintableJSON

    Details

    • Type: New Feature
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: io, performance
    • Labels:
      None

      Description

      Per Todd Lipcon's comment in HDFS-2834, "
      Whenever a native decompression codec is being used, ... we generally have the following copies:

      1) Socket -> DirectByteBuffer (in SocketChannel implementation)
      2) DirectByteBuffer -> byte[] (in SocketInputStream)
      3) byte[] -> Native buffer (set up for decompression)
      4*) decompression to a different native buffer (not really a copy - decompression necessarily rewrites)
      5) native buffer -> byte[]

      with the proposed improvement we can hopefully eliminate #2,#3 for all applications, and #2,#3,and #5 for libhdfs.
      "

      The interfaces in the attached patch attempt to address:
      A - Compression and decompression based on ByteBuffers (HDFS-2834)
      B - Zero-copy compression and decompression (HDFS-3051)
      C - Provide the caller a way to know how the max space required to hold compressed output.

        Attachments

        1. hadoop8148.patch
          8 kB
          Tim Broberg
        2. hadoop-8148.patch
          6 kB
          Owen O'Malley
        3. zerocopyifc.tgz
          2 kB
          Tim Broberg

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                tbroberg Tim Broberg
              • Votes:
                0 Vote for this issue
                Watchers:
                30 Start watching this issue

                Dates

                • Created:
                  Updated: