Hive、Tez、Yarn资源问题总结以及优化参数

Hive、Tez、Yarn资源问题总结以及优化参数

  1. 问题解决

Hadoop版本:2.7.3

Hive版本: 2.1.1

Tez版本: 0.9.1

问题描述:Hive集成Tez后,配置默认选择的执行引擎为tez,如下hive-site.xml配置截图。

 

在服务器上直接执行hive命令,可以正常进入hive客户端,

执行 set hive.execution.engine;

 

当set hive.execution.engine=mr;以mr作为执行引擎时,执行一些聚合,统计类的sql,比如count(1) ,会直接报以下错误:DEFAULT_MR_AM_ADMIN_USER_ENV

咋看这种不明确的错误很懵逼,后查阅资料则是jar包冲突。

解决方法:

https://blog.csdn.net/cuichunchi/article/details/108611831

其中包括spark 的问题解决。

  1. 出现如下图异常:

 

 

表示没有可用的container容器分配了,由于container资源被抢占或者资源不足,而task最大的失败重试次数默认是4。故需要调整以下参数:

参数:用set 设置

描述

tez.am.task.max.failed.attempts

10

Task任务的重试次数

tez.am.max.app.attemps

5

AM自己失败的最大重试次数,默认2次,可能因为一些系统原因导致失联

hive.tez.container.size

不小于

yarn.scheduler.minimum-allocation-mb或者是等于

yarn.scheduler.maximum-allocation-mb的倍数

Tez AppMaster向RM申请的container大小,单位M

 

注意:hive.tez.container.size也不能过大,设置太大执行直接会以下错误:

 

  1. 出现如下图异常报错信息:

因为在mapred-sit.xml文件中配置的mapreduce.task.io.sort.mb=307,表示环形缓冲区的大小,

而上图上设置了tez.java.opts为128M,明显小于307M,从报错提示也能看出,故重新设置hive.tez.java.opts为307/0.8即可。

  1. 优化参数详解

背景

tez是hive的常用引擎之一,本文介绍tez常用的调试参数。主要是内存,map/reduce数量方面的调试。

Tez内存分布图:

Mapreduce内存分布图:

1.内存调试

tez.am.resource.memory.mb

默认值

参数说明

详细解释

128

Application Master分配的container大小,单位为M

 

tez.am.launch.cmd-opts

默认值

参数说明

详细解释

-Dlog4j.configurationFile=tez-container-log4j2.properties -Dtez.container.log.level=INFO -Dtez.container.root.logger=CLA

Tez AppMaster进程启动期间提供的命令行选项。 不要在这些启动选项中设置任何Xmx或Xms,以便Tez可以自动确定它们

不需要主动设置

hive.tez.container.size

默认值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,Hive可以将任务提交到YARN集群上运行。默认情况下,Hive使用MapReduce作为执行引擎,可以通过设置Hive配置参数来将任务提交到YARN集群上运行。具体步骤如下: 1. 确认Hadoop集群和YARN集群已经正确配置并运行。 2. 在hive-site.xml中设置以下参数: ``` <property> <name>hive.execution.engine</name> <value>tez</value> </property> <property> <name>hive.tez.container.size</name> <value>1024</value> </property> <property> <name>hive.tez.java.opts</name> <value>-Xmx819m</value> </property> <property> <name>hive.tez.log.level</name> <value>INFO</value> </property> <property> <name>hive.server2.tez.initialize.default.sessions</name> <value>true</value> </property> <property> <name>hive.server2.tez.sessions.per.default.queue</name> <value>1</value> </property> <property> <name>hive.server2.tez.default.queues</name> <value>default</value> </property> <property> <name>hive.execution.engine</name> <value>mr</value> </property> <property> <name>hive.exec.submitviachild</name> <value>false</value> </property> <property> <name>mapreduce.jobtracker.address</name> <value>yarn-cluster</value> </property> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hostname:port</value> </property> ``` 3. 将hive-exec-x.x.x.jar、hive-metastore-x.x.x.jar、hive-common-x.x.x.jar、hive-cli-x.x.x.jar、hive-service-x.x.x.jar和hive-service-rpc-x.x.x.jar添加到Hadoop的share/hadoop/mapreduce/lib目录中。 4. 在Hive中执行任务时,可以使用以下命令将任务提交到YARN集群上运行: ``` set mapreduce.framework.name=yarn; set yarn.resourcemanager.address=<resourcemanager_address>; ``` 其中,<resourcemanager_address>是YARN资源管理器的地址。 这样就可以将Hive任务提交到YARN集群上运行了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值