Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-24138

Llap external client flow is broken due to netty shading

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.0.0
    • Component/s: llap

      Description

      We shaded netty in hive-exec in - https://issues.apache.org/jira/browse/HIVE-23073

      This breaks LLAP external client flow on LLAP daemon side -

      LLAP daemon stacktrace -

      2020-09-09T18:22:13,413  INFO [TezTR-222977_4_0_0_0_0 (4974183244412222977_0004_0_00_000000_0)] llap.LlapOutputFormat: Returning writer for: attempt_4974183244412222977_0004_0_00_000000_0
      2020-09-09T18:22:13,419 ERROR [TezTR-222977_4_0_0_0_0 (4974183244412222977_0004_0_00_000000_0)] tez.MapRecordSource: java.lang.NoSuchMethodError: org.apache.arrow.memory.BufferAllocator.buffer(I)Lorg/apache/hive/io/netty/buffer/ArrowBuf;
      	at org.apache.hadoop.hive.llap.WritableByteChannelAdapter.write(WritableByteChannelAdapter.java:96)
      	at org.apache.arrow.vector.ipc.WriteChannel.write(WriteChannel.java:74)
      	at org.apache.arrow.vector.ipc.WriteChannel.write(WriteChannel.java:57)
      	at org.apache.arrow.vector.ipc.WriteChannel.writeIntLittleEndian(WriteChannel.java:89)
      	at org.apache.arrow.vector.ipc.message.MessageSerializer.serialize(MessageSerializer.java:88)
      	at org.apache.arrow.vector.ipc.ArrowWriter.ensureStarted(ArrowWriter.java:130)
      	at org.apache.arrow.vector.ipc.ArrowWriter.writeBatch(ArrowWriter.java:102)
      	at org.apache.hadoop.hive.llap.LlapArrowRecordWriter.write(LlapArrowRecordWriter.java:85)
      	at org.apache.hadoop.hive.llap.LlapArrowRecordWriter.write(LlapArrowRecordWriter.java:46)
      	at org.apache.hadoop.hive.ql.exec.vector.filesink.VectorFileSinkArrowOperator.process(VectorFileSinkArrowOperator.java:137)
      	at org.apache.hadoop.hive.ql.exec.Operator.vectorForward(Operator.java:969)
      	at org.apache.hadoop.hive.ql.exec.vector.VectorSelectOperator.process(VectorSelectOperator.java:158)
      	at org.apache.hadoop.hive.ql.exec.Operator.vectorForward(Operator.java:969)
      	at org.apache.hadoop.hive.ql.exec.TableScanOperator.process(TableScanOperator.java:172)
      	at org.apache.hadoop.hive.ql.exec.vector.VectorMapOperator.deliverVectorizedRowBatch(VectorMapOperator.java:809)
      	at org.apache.hadoop.hive.ql.exec.vector.VectorMapOperator.process(VectorMapOperator.java:842)
      	at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.processRow(MapRecordSource.java:92)
      	at org.apache.hadoop.hive.ql.exec.tez.MapRecordSource.pushRecord(MapRecordSource.java:76)
      	at org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.run(MapRecordProcessor.java:426)
      	at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:267)
      	at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run(TezProcessor.java:250)
      	at org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run(LogicalIOProcessorRuntimeTask.java:374)
      	at org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:75)
      	at org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:62)
      	at java.security.AccessController.doPrivileged(Native Method)
      	at javax.security.auth.Subject.doAs(Subject.java:422)
      	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1876)
      	at org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:62)
      	at org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:38)
      	at org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36)
      	at org.apache.hadoop.hive.llap.daemon.impl.StatsRecordingThreadPool$WrappedCallable.call(StatsRecordingThreadPool.java:118)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      

      Arrow method signature mismatch mainly happens due to the fact that arrow contains some classes which are packaged under io.netty.buffer.* -

      io.netty.buffer.ArrowBuf
      io.netty.buffer.ExpandableByteBuf
      io.netty.buffer.LargeBuffer
      io.netty.buffer.MutableWrappedByteBuf
      io.netty.buffer.PooledByteBufAllocatorL
      io.netty.buffer.UnsafeDirectLittleEndian
      

      Since we have relocated netty, these classes have also been relocated to org.apache.hive.io.netty.buffer.* and causing NoSuchMethodError.

      cc Anishek Agarwal Thejas Nair László Bodor Imran Rashid Bruce Robbins

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                ayushtkn Ayush Saxena
                Reporter:
                ShubhamChaurasia Shubham Chaurasia
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h
                  1h