-
Tez 简介
Tez 是一个 Hive 的运行引擎,性能优于 MR。为什么优于 MR 呢?看下图。
用 Hive 直接编写 MR 程序,假设有四个有依赖关系的 MR 作业,上图中,绿色是 Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到 HDFS。
Tez 可以将多个有依赖的作业转换为一个作业,这样只需写一次 HDFS,且中间节点较少,从而大大提升作业的计算性能。 -
使用版本
Hive: 2.3.1.
hadoop: 2.7.6.
Tez: 0.9.1.
Java: 1.8
前期准备,安装好hive,hadoop, hadoop可以是ha,伪分布式,单机均可. -
Tez安装
下载tez安装包, Tez官网,可以在Tez官网下载相应的版本并查看文档,也可以在tez下载,下载页下载.下载完成后,上传压缩包到相应hdfs目录,并解压,配置文件.本次压缩文件目录/home/software
,安装目录/home/office
,hdfs上tez目录/tez
.#新建hdfs上tez目录 [hadoop@bdata01 software ]$ hdfs dfs -mkdir /tez #上传tez压缩包到hdfs上 [hadoop@bdata01 software ]$ hdfs dfs -put /home/software/apache-tez-0.9.1-bin.tar.gz /tez #解压 [hadoop@bdata01 software ]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz -C ../office/ #重命名 [hadoop@bdata01 office ]$ mv apache-tez-0.9.1-bin/ tez-0.9.1
将tez压缩包上传到hdfs上,是因为安装tez只安装了一个节点.但是hadoop运行的时候,所有节点需要有tez的包.所以上传到hdfs上.
-
hive集成tez
进入到hive的配置目录,创建tez-site.xml#hive的配置目录 [hadoop@bdata01 conf ]$ pwd /home/office/hive-2.3.1/conf #创建tez-site.xml [hadoop@bdata01 conf ]$ vim tez-site.xml
#配置tez-site.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!--指定要读取的tez的jar包地址 --> <property> <name>tez.lib.uris</name> <value>${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz</value> </property> <!-- tez可使用集群的jar包 --> <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.ATSHistoryLoggin gService</value> </property> </configuration>
在 hive-env.sh 文件中添加 tez 环境变量配置和依赖包环境变量配置.
# Set HADOOP_HOME to point to a specific hadoop install directory export HADOOP_HOME=/home/office/hadoop-2.7.6 # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/home/office/hive-2.3.1/conf # Folder containing extra libraries required for hive compilation/execution can be controlled by: export TEZ_HOME=/home/office/tez-0.9.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=/home/office/hadoop-2.7.6/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
在 hive-site.xml 文件中添加如下配置,更改 hive 计算引擎.
<property> <name>hive.execution.engine</name> <value>tez</value> </property>
-
测试
启动hive,并测试.#启动hive [hadoop@bdata01 hive-2.3.1 ]$ bin/hive #创建测试表,并插入数据 hive (default)> create table if not exists stu(id int, mane string); hive (default)> insert into stu values(1,'zhangsan');
出现下图界面,说明已经使用了Tez引擎.
-
注意事项.
运行 Tez 时检查到用过多内存而被 NodeManager 杀死进程问题:Caused by: org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1546781144082_0005failed 2 times due to AM Container for appattempt_1546781144082_0005_000002 exited with exitCode: -103 For more detailed output, check application tracking page:http://hadoop103:8088/cluster/app/application_15467811440 82_0005Then, click on links to logs of each attempt.Diagnostics: Container [pid=11116,containerID=container_1546781144082_0005_02_000001] is running beyond virtual memory limits. Current usage: 216.3 MB of 1 GB physical memory used; 2.6 GB of 2.1 GB virtual memory used. Killing container.
解决办法,修改yarn-site.xml,关闭虚拟内存检查.<property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
分发yarn-sit.xml,并重启yarn即可.
Apache Hive 集成Tez引擎
最新推荐文章于 2023-11-29 15:11:00 发布