You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive on Tez Reduce阶段作业失败报InterruptedException问题咨询

环境
  • hive 3.1.2
  • tez 0.10.2
  • hadoop 3.2.1
问题详情

我当前搭配Hive LLAP使用Tez,Tez已按照官方文档完成部署。目前LLAP运行正常,但Tez作业持续失败:相同的查询在container模式下可以正常运行,一旦作业执行到切换为Reduce作业的阶段就会持续报错。

作业运行状态如下:

----------------------------------------------------------------------------------------------
        VERTICES      MODE        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
----------------------------------------------------------------------------------------------
Map 1 .........       llap       RUNNING     59         56        0        3     134       8
Reducer 2 ....        llap       RUNNING     51         36        0       15       0     124
----------------------------------------------------------------------------------------------
VERTICES: 00/02  [=====================>>-----] 83%   ELAPSED TIME: 12.35 s
----------------------------------------------------------------------------------------------

作业未出现OOM异常,排查错误日志发现进入Reduce操作时会反复抛出如下异常:

2021-09-15T10:46:19,515 ERROR [TezTR-470960_251_1_1_32_0 (1631527470960_0251_1_01_000032_0)] tez.TezProcessor: java.lang.InterruptedException
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2048)
    at org.apache.tez.runtime.InputReadyTracker$InputReadyMonitor.awaitCondition(InputReadyTracker.java:147)
    at org.apache.tez.runtime.InputReadyTracker.waitForAllInputsReady(InputReadyTracker.java:107)
    at org.apache.tez.runtime.api.impl.TezProcessorContextImpl.waitForAllInputsReady(TezProcessorContextImpl.java:138)
    at org.apache.tez.runtime.api.impl.TezProcessorContextImpl.waitForAllInputsReady(TezProcessorContextImpl.java:133)
    at org.apache.hadoop.hive.ql.exec.tez.ReduceRecordProcessor.init(ReduceRecordProcessor.java:122)
    at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor(TezProcessor.java:266)
    at org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run(TezProcessor.java:250)
    at org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run(LogicalIOProcessorRuntimeTask.java:381)
    at org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:82)
    at org.apache.tez.runtime.task.TaskRunner2Callable$1.run(TaskRunner2Callable.java:69)
    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:1730)
    at org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:69)
    at org.apache.tez.runtime.task.TaskRunner2Callable.callInternal(TaskRunner2Callable.java:39)
    at org.apache.tez.common.CallableWithNdc.call(CallableWithNdc.java:36)
    at org.apache.hadoop.hive.llap.daemon.impl.StatsRecordingThreadPool$WrappedCallable.call(StatsRecordingThreadPool.java:110)
    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)

补充说明:使用场景下Tez 0.10.1存在jetty和snappy相关的特定问题,因此当前部署的是GitHub上发布的0.10.2版本。


解决方案

排查步骤

  1. 校验配置项tez.am.llap.daemon.port是否和Hive LLAP的RPC端口一致,端口不匹配会导致Reduce阶段拉取Map端输出时触发等待超时被主动打断。
  2. 检查tez.task.timeout以及hive.llap.task.timeout配置值是否过短,Reduce需要等待全部Map任务输出就绪才能开始执行,当等待时间超出超时阈值时就会抛出该中断异常。
  3. 排查所有LLAP节点的网络连通性,确认LLAP默认通信端口(通常为10000、15002)没有被防火墙拦截,Reduce节点拉取Map分片时网络不通也会触发等待超时。

修复方案

  1. 临时验证:将hive.llap.execution.mode设置为only_map,重新提交作业观察是否能正常完成,如果作业正常运行则可确认是Reduce阶段LLAP通信问题。
  2. 配置优化:在tez-site.xml和hive-site.xml中新增如下配置,延长等待超时阈值,调整Reduce启动时机:
<!-- tez-site.xml 新增配置 -->
<property>
  <name>tez.runtime.input.ready.wait.timeout.ms</name>
  <value>300000</value>
</property>
<property>
  <name>tez.am.reduce.slowstart.completed.maps</name>
  <value>0.95</value>
</property>

<!-- hive-site.xml 新增配置 -->
<property>
  <name>hive.llap.task.timeout</name>
  <value>300000</value>
</property>
  1. 版本兼容修复:由于你使用的是未正式发布的Tez 0.10.2快照版本,可保留Tez 0.10.1正式版基础上单独替换jetty和snappy依赖包,避开快照版本输入等待逻辑的已知bug。

内容的提问来源于stack exchange,提问作者hoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:05