Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-11425 Cell/DBB end-to-end on the read-path
  3. HBASE-15077

Support OffheapKV write in compaction with out copying data on heap

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 2.0.0
    • regionserver, Scanners
    • None
    • Reviewed

    Description

      HBASE-14832 is not enough to handle this. Doing the remaining needed here.

       if (cell instanceof ByteBufferedCell) {
      890	      out.writeShort(rowLen);
      891	      ByteBufferUtils.copyBufferToStream(out, ((ByteBufferedCell) cell).getRowByteBuffer(),
      892	        ((ByteBufferedCell) cell).getRowPosition(), rowLen);
      893	      out.writeByte(fLen);
      894	      ByteBufferUtils.copyBufferToStream(out, ((ByteBufferedCell) cell).getFamilyByteBuffer(),
      895	        ((ByteBufferedCell) cell).getFamilyPosition(), fLen);
      896	      ByteBufferUtils.copyBufferToStream(out, ((ByteBufferedCell) cell).getQualifierByteBuffer(),
      897	        ((ByteBufferedCell) cell).getQualifierPosition(), qLen);
      

      We have done this but it is not really helping us!
      In ByteBufferUtils#copyBufferToStream

      public static void copyBufferToStream(OutputStream out, ByteBuffer in,
            int offset, int length) throws IOException {
          if (in.hasArray()) {
            out.write(in.array(), in.arrayOffset() + offset,
                length);
          } else {
            for (int i = 0; i < length; ++i) {
              out.write(toByte(in, offset + i));
            }
          }
        }
        

      So for DBB it is so costly op writing byte by byte reading each to on heap.
      Even if we use writeByteBuffer(OutputStream out, ByteBuffer b, int offset, int length), it won't help us as the underlying stream is a ByteArrayOutputStream and so we will end up in copying.

      Attachments

        1. HBASE-15077_V2.patch
          21 kB
          Anoop Sam John
        2. HBASE-15077_V2.patch
          21 kB
          Anoop Sam John
        3. HBASE-15077_V3.patch
          21 kB
          Anoop Sam John
        4. HBASE-15077.patch
          21 kB
          Anoop Sam John

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            anoop.hbase Anoop Sam John
            anoop.hbase Anoop Sam John
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment