Apache Hive 集成Tez引擎

8 篇文章 0 订阅
3 篇文章 0 订阅
  1. Tez 简介
    Tez 是一个 Hive 的运行引擎,性能优于 MR。为什么优于 MR 呢?看下图。
    tez引擎

    用 Hive 直接编写 MR 程序,假设有四个有依赖关系的 MR 作业,上图中,绿色是 Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到 HDFS。
    Tez 可以将多个有依赖的作业转换为一个作业,这样只需写一次 HDFS,且中间节点较少,从而大大提升作业的计算性能。

  2. 使用版本
    Hive: 2.3.1.
    hadoop: 2.7.6.
    Tez: 0.9.1.
    Java: 1.8
    前期准备,安装好hive,hadoop, hadoop可以是ha,伪分布式,单机均可.

  3. 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上.

  4. 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>
    
  5. 测试
    启动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引擎

  6. 注意事项.
    运行 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即可.

参考:Hive更换Tez计算引擎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值