Hive-3.1.1 + Tez-0.9.1
Posted 健哥说编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive-3.1.1 + Tez-0.9.1相关的知识,希望对你有一定的参考价值。
10.11、TEZ
使用Tez做为Hive的查询引擎。默认情况下hive的查询引擎为MapReduce。在hive2以后和各版本中,启动hive命令行界面时,将给出以下提示:
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
可选的引擎为Spark或Tez。以下为Hive集成Tez的过程。
版本说明:
Hadoop-2.7.7
Hive-3.1.1
Tez-0.9.1
准备工作,请先安装好Hadoop(HDFS,Yarn)和Hive。目前已经存在伪分布式配置如下:
IP/Server |
软件 |
进程 |
192.168.56.21/server21 |
Hadoop-2.7.7 Hive-3.1.1 |
NameNode SecondaryNameNode ResourceManager NodeManger DataNode RunJar (Hive metasstore) |
步1、下载tez
http://mirrors.hust.edu.cn/apache/tez/0.9.1/apache-tez-0.9.1-bin.tar.gz
步2、解压
将tez解压到集群的安装目录下:
# tar -zxvf apache-tez-0.9.1-bin.tar.gz -C /app/
修改一下名称,否则太长了:
# mv apache-tez-0.9.1-bin tez-0.9.1
替换hadoop的jar包:
检查$TEZ_HOME/lib下的hadoop的两个jar包为
Hadoop-mapreduce-client-core-2.7.0.jar
Hadoop-mapreduce-client-common-2.7.0.jar
而我们目前使用的hadoop为2.7.7,所以需要用hadoop中的包,替换tez下的包,以免发生冲突:
cp /app/hadoop-2.7.7/share/mapreduce/hadoop/hadoop-mapreduce-client-core-2.7.7.jar /tez-0.9.1/lib/
cp /app/hadoop-2.7.7/share/mapreduce/hadoop/hadoop-mapreduce-client-common-2.7.7.jar /tez-0.9.1/lib/
步3、配置tez-site.xml文件
在$HADOOP_HOME/etc/hadoop目录下,添加tez-site.xml配置文件,内容如下:
<configuration>
<!--指定tez依赖的文件在hdfs上的位置,一会上传-->
<property>
<name>tez.lib.uris</name>
<value>hdfs://server21:8020/user/tez/tez.tar.gz</value>
</property>
<!--指定tez所使用的最大的java内存比例-->
<property>
<name>tez.container.max.java.heap.fraction</name>
<value>0.2</value>
</property>
</configuration>
此配置文件,可以参考:TEZ_HOME/conf/tez-default.xml文件。
步4、上传tez.tar.gz
上传gz文件:
#hdfs dfs -copyFromLocal /app/tez-0.9.1/share/tez.tar.gz /user/tez/tez.tar.gz
步5、配置环境变量
在linux中添加以下环境变量,其中黑体为添加的新配置:
export HADOOP_HOME=/app/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HIVE_HOME=/app/hive-3.1.1
export PATH=$PATH:$HIVE_HOME/bin
export TEZ_CONF_DIR=$HADDOP_CONF_DIR
export TEZ_HOME=/app/tez-0.9.1
export TEZ_JARS=$TEZ_HOME/*:$TEZ_HOME/lib/*
export HADOOP_CLASSPATH=$TEZ_CONF_DIR:$TEZ_JARS:$HADOOP_CLASSPATH
步6、启动hive命令行
目前在本机已经启动以下服务:
[root@server21 share]# jps
19428 DataNode
19604 SecondaryNameNode
19895 NodeManager
20233 RunJar
19787 ResourceManager
23579 Jps
19292 NameNode
进程hive命令行:
# hive
Hive>
设置hive所使用的引擎为tez:
hive> set hive.execution.engine;
hive.execution.engine=mr //查询默认为mr
hive> set hive.execution.engine=tez;//设置为tez
hive> set hive.execution.engine;
hive.execution.engine=tez//再次查询已经转换成tez。
如果不想每一次都设置,可以修改:hive-site.xml文件,添加以下配置:
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
步7、执行聚合查询测试
OK,到此,已经可以使用Tez做为Hive的引擎了。
Tez的参数优化:http://www.cnblogs.com/mobiwangyue/p/8405780.html
以上是关于Hive-3.1.1 + Tez-0.9.1的主要内容,如果未能解决你的问题,请参考以下文章