Hive on Tez

2020-12-22  本文已影响0人  珺王不早朝

Hortonworks 在2014年左右发布了 Stinger Initiative,并进行社区分享,为的是让 Hive 支持更多 SQL,并实现更好的性能。

1. Tez 概述

Tez 是 Apache 开源的支持 DAG(有向无环图)作业的计算框架,是支持 Hadoop 2.x 的重要引擎。它源于 MapReduce 框架,核心思想是将 Map 和 Reduce 两个操作进一步拆分,分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的 DAG 作业。

Tez 将 Map task 和 Reduce task 进一步拆分为如下图所示:

Tez 的 task 由 Input、processor、output 阶段组成,可以表达所有复杂的 map、reduce 操作,如下图:

Tez 可以将多个有依赖的作业转换为一个作业(只需写一次 HDFS,中间环节较少),从而大大提升 DAG 作业的性能。Tez 已被 Hortonworks 用于 Hive 引擎的优化,经测试一般小任务比 Hive MR 的 2-3 倍速度左右,大任务 7-10 倍左右,情况不同效果不同。

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.

Tez + Hive 仍采用 MapReduce 计算框架,但对 DAG 的作业依赖关系进行了裁剪,并将多个小作业合并成一个大作业,不仅减少了计算量,而且写 HDFS 次数也大大减少。

2. Tez 安装部署

  1. 下载软件包:apache-tez-0.9.2-bin.tar.gz
  2. 解压缩
tar -zxvf apache-tez-0.9.0-bin.tar.gz
cd apache-tez-0.9.0-bin/share
  1. 将tez的压缩包放到到 hdfs 上
hdfs dfs -mkdir -p /user/tez
hdfs dfs -put tez.tar.gz /user/tez
  1. $HADOOP_HOME/etc/hadoop/ 下创建 tez-site.xml 文件,做如下配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 指定在 hdfs上的 tez包文件 -->
    <property>
        <name>tez.lib.uris</name>
        <value>hdfs://centos7-1:9000/user/tez/tez.tar.gz</value>
    </property>
</configuration>

保存后将文件复制到集群所有节点

  1. 增加客户端节点的配置(/etc/profile)
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export TEZ_CONF_DIR=$HADOOP_CONF_DIR
export TEZ_JARS=/opt/apps/tez/*:/opt/apps/tez/lib/*
export HADOOP_CLASSPATH=$TEZ_CONF_DIR:$TEZ_JARS:$HADOOP_CLASSPATH
  1. Hive 设置 Tez 执行
hive> set hive.execution.engine=tez;
  1. 如果想默认使用 Tez,可在 $HIVE_HOME/conf 目录下 hive-site.xml 中增加
<property>
    <name>hive.execution.engine</name>
    <value>tez</value>
</property>
上一篇 下一篇

猜你喜欢

热点阅读