hive任务卡在Tez session hasn‘t been created yet. Opening session

本文讲述执行Hive表插入任务时卡住的问题。尝试多种办法,如增加tez-site.xml参数、设置队列名称等均未解决。最终先通过yarn杀掉spark的Thrift Server并重启解决,后问题复发,将tez的tez.am.resource.memory.mb配置改小后成功解决。

执行一个插入操作,结果任务在这里卡住不动了:Tez session hasn't been created yet. Opening 今天执行一个hive表的插入任务,结果在这里卡住不动了:

Tez session hasn‘t been created yet. Opening session

网上一堆的解决办法,比如:

1、将tez-site.xml里的tez.am.resource.memory.mb的参数进行适量的增加;我将改参数增加到了2048M,依然不行;

2、设置队列名称

# 设置引擎

set hive.execution.engine=mr;

set hive.execution.engine=spark;

set hive.execution.engine=tez;

# 如果使用的是mr(原生mapreduce)

SET mapreduce.job.queuename=etl;

# 如果使用的引擎是tez

set tez.queue.name=etl

# 设置队列(etl为队列名称,默认为default)

设置了 tez,报如下错:

Application application_1622620346132_0005 submitted by user hive to unknown queue: etl

设置引擎为mr,报如下错:

Error: Error while processing statement: hive execution engine mr is not supported. (state=42000,code=1) 

最终解决办法:

[yarn@hadoop01 ~]$ yarn application -list
WARNING: YARN_OPTS has been replaced by HADOOP_OPTS. Using value of YARN_OPTS.
21/06/02 17:19:55 INFO client.AHSProxy: Connecting to Application History server at hadoop01.com/192.168.100.151:10200
21/06/02 17:19:55 INFO client.ConfiguredRMFailoverProxyProvider: Failing over to rm2
Total number of applications (application-types: [], states: [SUBMITTED, ACCEPTED, RUNNING] and tags: []):1
                Application-Id        Application-Name        Application-Type          User         Queue                 State           Final-State           Progress                           Tracking-URL
application_1620261296802_0013    Thrift JDBC/ODBC Server                   SPARK         spark       default               RUNNING             UNDEFINED                10%               http://hadoop04.com:4040

[yarn@hadoop01 ~]$ yarn application -kill application_1620261296802_0013

不知道为什么spark的Thrift Server会影响这里,于是先用yarn杀掉,然后再重启Thrift Server;再执行hive任务就OK了!

---------------------------华丽的分割线---------------------------------------

今天这个问题又出现了,说明上次杀掉Thrift Server的方法治标不治本;

这次将tez的配置改小:tez.am.resource.memory.mb =256

然后就可以了,网上说的调小tez.am.resource.memory.mb的值;同时,增大yarn中 Memory allocated for all YARN containers on a node的值;我只把tez.am.resource.memory.mb改小就可以了。。。

 

 

 

 

<think>我们正在处理一个Hive配置错误:用户报告说配置项'hive.tez.groupby.skewed'不存在。首先,我们需要确认这个配置项的正确性。根据Hive官方文档和常见配置项,通常用于处理groupby倾斜的配置项是`hive.groupby.skewindata`(在MapReduce引擎下)和`hive.optimize.skewjoin`(用于join倾斜,但也可参考用于groupby)。而在Tez引擎下,处理groupby倾斜的配置项可能是`hive.tez.groupby.skewed`?但根据用户反馈,这个配置项不存在。实际上,在Hive中,对于Tez引擎,处理groupby倾斜的配置项是:-`hive.groupby.skewindata`:这个配置项在MapReduce和Tez引擎下都可用,但它在Tez引擎下的行为可能不同,或者可能不被推荐。-另外,Tez引擎有自己的一些优化,比如通过`hive.tez.groupby.groupby.skewed`?但实际上,我查阅资料发现,Hive中并没有`hive.tez.groupby.skewed`这个配置项。因此,用户可能错误地输入了配置项名称。正确的配置项可能是`hive.groupby.skewindata`,或者对于Tez引擎,处理groupby倾斜的优化可能由其他配置项控制。另外,引用[2]中提到了`hive.optimize.skewjoin`,这是用于处理join倾斜的,而用户的问题是关于groupby的。所以,针对groupby倾斜,我们通常使用`hive.groupby.skewindata`。在Tez引擎下,还可以使用以下配置项来优化groupby:-`hive.tez.groupby.freememory.reduce.percent`:设置reduce任务中空闲内存的百分比,用于处理数据倾斜。-另外,Tez引擎本身具有动态调整的能力,可以自动处理一些倾斜情况。但是,如果用户确实遇到了groupby倾斜问题,并且想使用类似于处理join倾斜的配置方式,Hive在较新版本(例如Hive2.0以后)中提供了`hive.groupby.skewindata.reduce.aggregate`(具体名称可能有所不同)等配置项,但标准做法还是使用`hive.groupby.skewindata`。因此,解决方案如下:1.确认配置项名称:用户应该使用`hive.groupby.skewindata`,而不是`hive.tez.groupby.skewed`。2.如果用户已经使用了正确的配置项名称,但仍然报错,那么可能是Hive版本不支持该配置项(例如,在较旧的Hive版本中,该配置项可能只对MapReduce引擎有效)。在这种情况下,可以考虑升级Hive或使用其他方式处理倾斜。另外,用户提到在引用[1]中通过替换jline包解决了类冲突问题,但当前问题与类冲突无关,所以不需要考虑替换jar包。针对用户的具体错误信息,即配置项不存在,我们可以这样解决:-检查配置项名称的拼写:确保是`hive.groupby.skewindata`。-查看Hive文档:确认当前Hive版本支持的配置项。如果用户确实需要在Tez引擎下处理groupby倾斜,并且`hive.groupby.skewindata`不起作用,可以考虑以下替代方案:-使用两个MR任务:第一个任务进行随机分布,第二个任务进行聚合(这是`hive.groupby.skewindata=true`的工作原理,但在Tez引擎下可能不是最优的)。-使用Tez特定的优化:例如,设置`hive.tez.groupby.mode`(可以设置为`partials`或`finish`)以及调整内存参数。总结步骤:1.将配置项`hive.tez.groupby.skewed`替换为`hive.groupby.skewindata`,并设置为true。2.如果问题依旧,尝试升级Hive版本或查阅对应版本的文档。3.考虑使用其他方式处理数据倾斜,例如修改查询语句(如添加随机前缀进行双重聚合)。由于用户的问题是关于配置项不存在的,所以主要原因是配置项名称错误。因此,修改配置项名称即可。示例设置:在hive-site.xml中添加:```xml<property><name>hive.groupby.skewindata</name><value>true</value></property>```或者通过HiveCLI设置:```sqlsethive.groupby.skewindata=true;```如果用户使用的是较新的Hive版本(如Hive3.x),可能需要使用其他配置项,但`hive.groupby.skewindata`在大多数版本中都是可用的。注意:这个配置项可能会增加一次额外的MapReduce作业(在MapReduce引擎下),在Tez引擎下,它会转化为额外的DAG步骤。因此,需要权衡性能。如果用户的问题不是配置项不存在,而是设置了该配置项后仍然出现倾斜,那么可能需要更深入的分析。因此,给用户的解决方案是:更正配置项名称为`hive.groupby.skewindata`。相关问题:1.Hive中如何处理groupby操作的数据倾斜?2.Tez引擎下有哪些优化groupby操作的配置项?3.如何确认Hive配置项的名称和可用性?</think>### Hive配置错误解决方案:`hive.tez.groupby.skewed`不存在 该错误表明您尝试使用的配置项**`hive.tez.groupby.skewed`在Hive中不存在**。以下是逐步解决方案: --- #### 1. **确认配置项名称** - **核心问题**:`hive.tez.groupby.skewed`是无效名称,Hive官方配置中无此参数。 - **正确配置项**: - 针对**GROUP BY倾斜优化**:使用 `hive.groupby.skewindata`(通用)或 `hive.optimize.skewjoin`(需结合场景)[^1][^2]。 - 针对**Tez引擎优化**:相关配置以 `hive.tez` 开头,但需匹配官方文档(如 `hive.tez.dynamic.partition.pruning`)。 --- #### 2. **解决方案** ```sql -- 替换无效配置项 SET hive.groupby.skewindata = true; -- 通用GROUP BY倾斜优化 SET hive.optimize.skewjoin = true; -- JOIN倾斜优化(需配合hive.skewjoin.key使用) SET hive.skewjoin.key = 100000; -- 定义倾斜阈值[^2] ``` **配置说明**: - `hive.groupby.skewindata=true`: 启用两阶段聚合,先随机分发key再聚合,缓解单节点压力。 - `hive.optimize.skewjoin=true`: 自动拆分倾斜Key的JOIN任务(需预知倾斜Key分布)[^2]。 --- #### 3. **验证配置有效性** ```sql -- 检查所有Tez相关配置 SHOW CONF 'hive.tez.%'; -- 检查倾斜优化配置 SHOW CONF 'hive.groupby.skewindata'; SHOW CONF 'hive.optimize.skewjoin'; ``` - 若返回结果为空,说明配置项名称错误或Hive版本不支持。 --- #### 4. **其他可能原因** - **Hive版本兼容性**: Tez专属配置需Hive 0.13+,旧版本可能缺少部分参数。升级HiveTez可解决。 - **配置文件错误**: 检查`hive-site.xml`中是否有拼写错误: ```xml <!-- 错误示例 --> <property> <name>hive.tez.groupby.skewed</name> <!-- 无效名称 --> <value>true</value> </property> <!-- 正确示例 --> <property> <name>hive.groupby.skewindata</name> <value>true</value> </property> ``` --- #### 5. **备选方案:手动处理倾斜** 若配置优化无效,可通过SQL改写解决: ```sql -- 示例:对倾斜Key手动分桶聚合 SELECT user_id, SUM(amount) FROM ( SELECT user_id, amount, IF(user_id IN ('high_freq_key1','high_freq_key2'), CAST(rand() * 10 AS INT), -- 对倾斜Key分桶 0) AS bucket FROM sales ) tmp GROUP BY user_id, bucket; ``` --- ### 总结建议 1. **立即更正配置项名称** → 使用 `hive.groupby.skewindata` 或 `hive.optimize.skewjoin`。 2. **检查Hive/Tez版本** → 升级至官方推荐版本(如Hive 3.x + Tez 0.10+)。 3. **验证配置** → 通过`SHOW CONF`确认参数是否存在。 4. **监控效果** → 运行任务后观察YARN日志,确认倾斜是否缓解。 > 提示:Hive配置项需严格匹配[官方文档](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码道功成

过程不易,恳请支持一下!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值