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

单节点Hadoop下Tez引擎执行6TB数据Hive查询卡顿求助

问题描述

单节点Hadoop环境,使用Tez引擎执行10GB数据的Hive查询时运行正常,但加载6TB数据后,查询卡在**"Launching Job 1 out of 1"**阶段,相关Hive日志如下:

Tez system stage directory hdfs://127.0.0.1:9000/tmp/hive/hadoop/_tez_session_dir/0716a629-1a1d-4500-86d9-6041aaf61596/.tez/application_1675755644314_0003 doesn't exist and is created
2023-02-07T13:12:01,670 INFO [Tez session start thread] impl.YarnClientImpl: Killed application application_1675755644314_0002
2023-02-07T13:12:01,671 ERROR [Tez session start thread] tez.TezSessionState: Failed to start Tez session
java.io.IOException: java.lang.InterruptedException: sleep interrupted
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.startSessionAndContainers(TezSessionState.java:456) ~[hive-exec-3.1.2.jar:3.1.2]
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.access$100(TezSessionState.java:101) ~[hive-exec-3.1.2.jar:3.1.2]
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState$1.call(TezSessionState.java:376) ~[hive-exec-3.1.2.jar:3.1.2]
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState$1.call(TezSessionState.java:371) ~[hive-exec-3.1.2.jar:3.1.2]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_352]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_352]
Caused by: java.lang.InterruptedException: sleep interrupted
at java.lang.Thread.sleep(Native Method) ~[?:1.8.0_352]
at org.apache.tez.client.TezClient.waitTillReady(TezClient.java:1020) ~[tez-api-0.9.2.jar:0.9.2]
at org.apache.tez.client.TezClient.waitTillReady(TezClient.java:982) ~[tez-api-0.9.2.jar:0.9.2]
at org.apache.hadoop.hive.ql.exec.tez.TezSessionState.startSessionAndContainers(TezSessionState.java:453) ~[hive-exec-3.1.2.jar:3.1.2]
... 5 more
2023-02-07T13:12:01,833 INFO [93c56d8b-6e20-4b06-a5ba-1101e67ac8d7 main] impl.YarnClientImpl: Submitted application application_1675755644314_0003
2023-02-07T13:12:01,839 INFO [93c56d8b-6e20-4b06-a5ba-1101e67ac8d7 main] client.TezClient: The url to track the Tez Session: http://hadoop-node:8088/proxy/application_1675755644314_0003/

解决建议

1. 调整YARN与Tez资源配置(单节点核心瓶颈)

单节点处理6TB数据时,默认资源配置不足以支撑,需针对性调整:

  • 修改yarn-site.xml:
    • 增大yarn.nodemanager.resource.memory-mb为机器物理内存的70%(如32G内存设为22528)
    • 设置yarn.scheduler.maximum-allocation-mb不小于上述值
    • 调整yarn.nodemanager.resource.cpu-vcores为机器可用CPU核心数的80%
  • 修改tez-site.xml:
    • 增大tez.am.resource.memory.mb至4096或更高,避免ApplicationMaster因内存不足被Kill
    • 设置tez.container.max.java.heap.fraction为0.7,合理分配容器堆内存比例

2. 延长Tez会话超时时间

日志中的InterruptedException: sleep interrupted说明会话启动超时,需调大等待阈值:

  • 在Hive命令行临时设置:
    set tez.session.am.dag.submit.timeout.secs=300;
    set tez.client.startup.timeout.secs=600;
    
    或在tez-site.xml中配置对应参数,永久生效。

3. 优化Hive查询与数据处理

通过数据拆分和参数调优降低单节点压力:

  • 对6TB大表做分区或分桶,减少查询扫描的数据量
  • 开启Hive并行执行:set hive.exec.parallel=true;
  • 调整MapReduce任务数:根据数据块大小设置mapreduce.job.maps(如6TB数据可设为100,避免单节点同时启动过多Map任务),同时合理增大mapreduce.job.reduces

4. 清理临时目录并重启服务

  • 删除HDFS上的Tez临时目录:hdfs dfs -rm -r /tmp/hive/hadoop/_tez_session_dir
  • 重启Hadoop、YARN和Hive服务,释放残留资源,确保配置生效

5. 排查系统资源瓶颈

单节点处理大数据时,磁盘IO和系统负载易成为卡点:

  • 用iostat查看磁盘使用率,top监控CPU、内存负载,确认是否有资源耗尽情况
  • 若磁盘IO过高,可将数据迁移至SSD磁盘,或优化磁盘缓存策略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:11:06