1

我在 Alluxio 上运行 Presto 查询时遇到了这个堆栈跟踪。有时我的查询能够成功,但有时它会因此错误而失败。这是什么意思,我该如何解决?

com.facebook.presto.spi.PrestoException:使用 org.apache.hadoop.mapred.TextInputFormat 打开 Hive 拆分 alluxio://xxxxx:19998/s3/data/m-00025(偏移量=100663296,长度=53990296)时出错:通道[id:0xfa748b02,L:/xxxxx:34874!R:xxxxx/xxxxx:29999] 已关闭。
    在 com.facebook.presto.hive.HiveUtil.createRecordReader(HiveUtil.java:219)
    在 com.facebook.presto.hive.GenericHiveRecordCursorProvider.lambda$createRecordCursor$0(GenericHiveRecordCursorProvider.java:71)
    在 com.facebook.presto.hive.authentication.NoHdfsAuthentication.doAs(NoHdfsAuthentication.java:23)
    在 com.facebook.presto.hive.HdfsEnvironment.doAs(HdfsEnvironment.java:80)
    在 com.facebook.presto.hive.GenericHiveRecordCursorProvider.createRecordCursor(GenericHiveRecordCursorProvider.java:70)
    在 com.facebook.presto.hive.HivePageSourceProvider.createHivePageSource(HivePageSourceProvider.java:183)
    在 com.facebook.presto.hive.HivePageSourceProvider.createPageSource(HivePageSourceProvider.java:93)
    在 com.facebook.presto.spi.connector.classloader.ClassLoaderSafeConnectorPageSourceProvider.createPageSource(ClassLoaderSafeConnectorPageSourceProvider.java:44)
    在 com.facebook.presto.split.PageSourceManager.createPageSource(PageSourceManager.java:56)
    在 com.facebook.presto.operator.ScanFilterAndProjectOperator.getOutput(ScanFilterAndProjectOperator.java:216)
    在 com.facebook.presto.operator.Driver.processInternal(Driver.java:379)
    在 com.facebook.presto.operator.Driver.lambda$processFor$8(Driver.java:283)
    在 com.facebook.presto.operator.Driver.tryWithLock(Driver.java:675)
    在 com.facebook.presto.operator.Driver.processFor(Driver.java:276)
    在 com.facebook.presto.execution.SqlTask​​Execution$DriverSplitRunner.processFor(SqlTask​​Execution.java:1053)
    在 com.facebook.presto.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:162)
    在 com.facebook.presto.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:456)
    在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    在 java.lang.Thread.run(Thread.java:748)
引起:java.io.IOException: Channel [id: 0xfa748b02, L:/xxxxx:34874 !R:xxxxx/xxxxx:29999] 已关闭。
    在 alluxio.client.block.stream.NettyPacketReader$PacketReadHandler.channelUnregistered(NettyPacketReader.java:314)
    在 alluxio.core.client.runtime.io.netty.channel.AbstractChannelHandlerContext.invokeChannelUnregistered(AbstractChannelHandlerContext.java:176)
4

1 回答 1

2

这意味着Alluxio客户端(Presto)和Alluxio worker之间的连接被意外关闭了。

通常这是由客户端上的长时间 GC 暂停引起的。Alluxio 客户端会定期在连接上发送保持活动状态,但这可能会被完整的 GC 延迟(直到工作人员关闭连接)。

-XX:+PrintGCDetails您可以通过添加 Java 选项和-Xloggc:<file name here>Presto 守护进程来验证是否存在 GC 压力。

于 2018-11-14T21:17:14.770 回答