Link Search Menu Expand Document

目录

  1. 基础环境
  2. Tez On Apache(HDP)编译
  3. Tez On CDH
  4. 安装部署Tez
  5. 调试使用Tez

对于Tez的安装部署我们通过两个方面来讲诉,一个就是原生支持Apache Hadoop(或者HDP),另一中就是在CDH的环境中集成使用。

基础环境


  • 以下是安装服务的必要环境
依赖版本
Tez>= 0.10.x
CentOS7.x
Java1.8.0_212+
HadoopApache(HDP) 3.x - CDH6.0.x
Nodev8.x

Tez On Apache(HDP)编译


注意我们需要Protobuf 2.5.0的环境支持,具体怎么安装可通过网上自行查询改资料很多。

由于tez已经是apache中的顶级项目所以对于集成Apache版或者HDP版本的Hadoop生态圈比较简单,我们只需要下载官方提供的下载包即可使用,不过我们不建议直接使用该包安装,建议使用源码编译进行安装。

  • 我们先将tez的源码克隆到本地
git clone https://github.com/apache/tez.git
  • 修改tez根目录中的pom.xml中hadoop的依赖

修改<hadoop.version>3.1.3</hadoop.version>为公司线上的hadoop实际版本

  • 使用以下命令进行源码编译
mvn install package -DskipTests -Dcheckstyle.skip -X

如果出现jar冲突问题可以增加-U参数进行依赖强制覆盖操作

Tez On CDH


  • 修改tez根目录中的pom.xml中hadoop的依赖

修改<hadoop.version>3.1.3</hadoop.version>为公司线上的hadoop实际版本,比如我们的是3.0.0-cdh6.0.1那么该参数修改为<hadoop.version>3.0.0-cdh6.0.1</hadoop.version>

  • 由于CDH版本的集群比较特殊,需要通过CDH的Maven的中央仓库下载依赖,还需要添加CDH的仓库地址,同样修改根目录的pom.xml文件在repositories节点中增加以下代码
<repository>
    <id>cloudera</id>
    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
    <name>Cloudera Repositories</name>
    <snapshots>
        <enabled>false</enabled>
    </snapshots>
</repository>
  • 我们还需要支持以下CDH的插件下载,修改根目录的pom.xml文件在pluginRepositories节点中增加以下代码
<pluginRepository>
    <id>cloudera</id>
    <name>Cloudera Repositories</name>
    <url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</pluginRepository>
  • 使用以下命令进行源码编译
mvn install package -DskipTests -Dcheckstyle.skip -X

如果出现jar冲突问题可以增加-U参数进行依赖强制覆盖操作

安装部署Tez


不管我们使用以上哪两种方式编译完以后会在tez-dist/target生成以下目录结构

drwxr-xr-x   2 shicheng  staff    64B  9 10 11:01 archive-tmp
drwxr-xr-x   3 shicheng  staff    96B  9 10 11:03 maven-archiver
drwxr-xr-x  30 shicheng  staff   960B  9 10 11:02 tez-0.10.1-SNAPSHOT
drwxr-xr-x  28 shicheng  staff   896B  9 10 11:03 tez-0.10.1-SNAPSHOT-minimal
-rw-r--r--   1 shicheng  staff    17M  9 10 11:03 tez-0.10.1-SNAPSHOT-minimal.tar.gz
-rw-r--r--   1 shicheng  staff    52M  9 10 11:02 tez-0.10.1-SNAPSHOT.tar.gz
-rw-r--r--   1 shicheng  staff   2.9K  9 10 11:03 tez-dist-0.10.1-SNAPSHOT-tests.jar

核心的文件我们需要使用tez-0.10.1-SNAPSHOT.tar.gz,当然tez-0.10.1-SNAPSHOT-minimal.tar.gz也可以使用,但是我们不建议这么去做,这里少了好多依赖不建议去使用。

  • 编译完成后我们将打包后的文件上传到HDFS中,方便集群的其他节点使用
hadoop fs -put -f tez-0.10.1-SNAPSHOT.tar.gz /user/tez/

-f参数标志我们要强制覆盖原有的文件

  • {HIVE_HOME}/conf目录下创建tez-site.xml文件,或者直接修改hive-site.xml配置文件,键入内容如下
<configuration>
    <property>
        <name>tez.lib.uris</name>
        <value>${fs.defaultFS}/user/tez/tez-0.10.1-SNAPSHOT.tar.gz</value>
    </property>
</configuration>
  • 增加tez的环境变量支持方便hive可以使用,修改{HIVE_HOME}/conf目录下的conf/hive-env.sh脚本文件,在文件末尾增加类似以下内容
export TEZ_HOME=<TezHome>

CDH可以使用类似

HADOOP_CLASSPATH=/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/conf:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/*:/opt/cloudera/parcels/CDH-6.3.2-1.cdh6.3.2.p0.1605554/lib/tez/lib/*

或者直接拷贝所有的tez相关文件到hive的目录中

调试使用Tez


  • 我们通过hive客户端连接到hive窗口中输入以下命令设置hive执行引擎为tez
set hive.execution.engine=tez;

当然我们可以修改hive-site.xml配置文件自动启用tez引擎,由于我们现在是测试所以做临时生效配置。

  • 执行我们的测试sql
select count(1) from temp.t1;

出现以下内容即为成功

----------------------------------------------------------------------------------------------
        VERTICES      MODE        STATUS  TOTAL  COMPLETED  RUNNING  PENDING  FAILED  KILLED
----------------------------------------------------------------------------------------------
Map 1 .......... container     SUCCEEDED      2          2        0        0       0       0
Reducer 2        container     SUCCEEDED      1          0        0        1       4       0
----------------------------------------------------------------------------------------------
VERTICES: 01/02  [========================>>] 100%   ELAPSED TIME: 19.70 s
----------------------------------------------------------------------------------------------

建议删除tez目录下的所有hadoop包,使用tez.use.cluster.hadoop-libs参数接管