记录Hive-2.3.8 on Tez-0.10.1部署及踩过的坑

本文主要记录一下自己在配置Hive on Tez遇到的一些问题及解决办法
这个折腾了我几天时间!!!
网上各种查找文档、答案,然后自己也重新编译了tez,然而问题一直没有解决。。。
于是静下心来重新开始:

hadoop版本:hadoop-3.2.2
hive版本:hive-2.3.8
tez版本:tez-0.10.1

前提条件:
1、hadoop-yarn集群已正常安装,并测试mapreduce程序正常
2、hive on mr正常,也就是hive可以正常的运行普通的mr任务

下面是配置tez的步骤:
1、首先是解压

tar -xf apache-tez-0.10.1-bin.tar.gz -C /opt/modules
mv apache-tez-0.10.1-bin tez-0.10.1

2、在hive/conf/hive_env.sh中添加如下配置

export TEZ_HOME=/opt/modules/tez-0.10.1    #是你的tez的解压目录
export TEZ_JARS=""
for jar in `ls $TEZ_HOME | grep jar`; do
    export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
    export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done
export HIVE_AUX_JARS_PATH=/opt/modules/hadoop/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS

注意:/opt/modules/hadoop/share/hadoop/common/hadoop-lzo-0.4.20.jar这个jar包是hadoop配置了lzo压缩
3、在hive/conf/目录下新建tez-site.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <property>
                <name>tez.lib.uris</name>
                <value>${fs.defaultFS}/tez/tez-0.10.1,${fs.defaultFS}/tez/tez-0.10.1/lib</value>
        </property>
        <property>
                <name>tez.lib.uris.classpath</name>
                <value>${fs.defaultFS}/tez/tez-0.10.1,${fs.defaultFS}/tez/tez-0.10.1/lib</value>
        </property>
        <property>
                <name>tez.use.cluster.hadoop-libs</name>
                <value>true</value>
        </property>
        <property>
                <name>tez.history.logging.service.class</name>
                <value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
        </property>
</configuration>

4、在tez-site.xml文件中配置的是hdfs的路径,因此需要将tez上传到hdfs

hdfs dfs -mkidr /tez
hdfs dfs -put /opt/modules/tez-0.10.1 /tez

5、在hive/conf/hive-site.xml文件添加如下配置

        <property>
                <name>hive.execution.engine</name>
                <value>tez</value>
        </property>

至此,tez的基本配置已经完成了!
现在到了测试的时候了,执行bin/hive命令

bin/hive
hive> show databases;
hive> show tables;
hive> create table student(id int, name string);

至此,一切正常,因为这些命令还没有用到mapreduce
当执行insert插入数据的时候,报错了!

insert into student values(100001,"jack");

报错信息大致如下:

FAILED:Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask

再次静下心来从头开始
进入到yarn管理页面查看具体日志,得到的报错信息大致如下:

java.lang.NoSuchMethodError: org.apache.commons.lang3.StringUtils.isAnyBlank

这个错误一般是包冲突导致的,于是我查找了hadoop、hive、tez所带的关于org.apache.commons.lang3相关的jar包
hadoop的包:

commons-lang3-3.7.jar

hive的包:

commons-lang3-3.1.jar

tez没有commons-lang3的包
版本果然不一致,于是我将hive的commons-lang3包替换成了commons-lang3-3.7.jar
替换之后重新启动hive,继续刚才的测试,发现还是报同样的错误

继续尝试,将commons-lang3-3.7.jar包添加到/opt/modules/tez-0.10.1/lib目录,并上传到hdfs,重新启动hive并测试,发现没有commons.lang3的错误了,而是报了另一个错误,不管怎么样,总算是有进步!
第二个错误信息如下:

Status: Failed
Vertex failed, vertexName=Map 1, vertexId=vertex_1640051535770_0003_1_00, diagnostics=[Vertex vertex_1640051535770_0003_1_00 [Map 1] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: values__tmp__table__1 initializer failed, vertex=vertex_1640051535770_0003_1_00 [Map 1], java.lang.IllegalArgumentException: Illegal Capacity: -40038

解决办法:
在hive_site中添加如下配置:

        <property>
                <name>hive.tez.container.size</name>
                <value>1024</value>
        </property>

至此,hive on tez 能够正常运行了

hive> insert into student values(100002,"jackson");
Query ID = hadoop_20211221112033_ee3d863c-8528-4cca-aba0-4dddbf297c3c
Total jobs = 1
Launching Job 1 out of 1
Status: Running (Executing on YARN cluster with App id application_1640051535770_0005)

----------------------------------------------------------------------------------------------
        VERTICES      MODE        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED  
----------------------------------------------------------------------------------------------
Map 1 .......... container     SUCCEEDED      1          1        0        0       0       0  
----------------------------------------------------------------------------------------------
VERTICES: 01/01  [==========================>>] 100%  ELAPSED TIME: 4.83 s     
----------------------------------------------------------------------------------------------
Loading data to table default.student
OK
Time taken: 10.03 seconds
hive> select * from student;
OK
100001  jack
100002  jackson
Time taken: 0.322 seconds, Fetched: 2 row(s)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值