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

Zero-copy ByteBuffer-based compressor / decompressor API

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • io, performance
    • 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

              Unassigned Unassigned
              tbroberg Tim Broberg
              Votes:
              0 Vote for this issue
              Watchers:
              29 Start watching this issue

              Dates

                Created:
                Updated: