Tez安装使用

简介

  tez全表查询时需要每个分区都存在,否则回报错,比如left join

编译,安装依赖

1、maven安装

1
2
> wget http://download.nus.edu.sg/mirror/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
> tar -xzf apache-maven-3.3.9-bin.tar.gz

再把mvn命令配置到/etc/profile文件中

2、protoc安装

1
2
3
4
> wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz
> tar -xzf apache-maven-3.3.9-bin.tar.gz
# 编译安装
> ./configure && make && make install

可能会缺少依赖,建议编译前先吧所有的依赖都装上 yum groupinstall -y "Development Tools"

3、tez

1
2
3
4
5
> wget http://download.nus.edu.sg/mirror/apache/tez/0.8.3/apache-tez-0.8.3-src.tar.gz
> tar -xzf apache-tez-0.8.3-src.tar.gz

# 编译打包,默认hadoop2.6,如果集群不是hadoop2.6,需要修改pom.xml中的Hadoop version
> mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true

编译后的包在tez-dist/target/目录下

配置,以下是CDH的安装配置步骤,如果不是CDH请参考官方安装文档

  1. hadoop新建目录 hadoop fs -mkdir /apps/tez-0.8.3/

  2. 上传 tez-dist/target/tez-0.8.3-minimal/下的所有文件到hdfs的 /apps/tez-0.8.3/ 目录
    hadoop fs -put tez-dist/target/tez-0.8.3-minimal/* /apps/tez-0.8.3/

  3. 新建tez目录 mkdir /usr/lib/tez

  4. 复制文件到tez目录 cp -r tez-dist/target/tez-0.8.3-minimal/* /usr/lib/tez

  5. 在tez目录下新建文件tez-site.xml,内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <property>
    <name>tez.lib.uris</name>
    <value>${fs.defaultFS}/apps/tez-0.8.3/,${fs.defaultFS}/apps/tez-0.8.3/lib</value>
    </property>
    <property>
    <name>tez.use.cluster.hadoop-libs</name>
    <value>true</value>
    </property>
    </configuration>
  6. 配置环境变量

    1
    2
    3
    export TEZ_JARS=/usr/lib/tez
    export TEZ_CONF_DIR=/usr/lib/tez/
    export HADOOP_CLASSPATH=${TEZ_CONF_DIR}:${TEZ_JARS}/*:${TEZ_JARS}/lib/*:${TEZ_JARS}
  7. 使用,可以全局设置tez为执行引擎,也可以hive查询时再设置,以下时hive查询时设置

    1
    set hive.execution.engine=tez;

常见错误

  1. 如果是root用户执行编译会报错,修改 tez-ui/pom.xml 文件,在exec-maven-plugin 标签下新增–allow-root
    (安装期间编译tez-ui2仍然报错,就把pom.xml中的tez-ui2 model给注释掉了,所以web页面会用不了)

  2. Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapred.MRVersion
    解决办法: 拷贝mr依赖包至tez的hdfs目录中。笔者的环境是CDH5.4.4,所以把hadoop-mapreduce-client-common-2.6.0-cdh5.4.4.jar拷贝到hdfs的/apps/tez-0.8.3/目录

参考文档

官方安装文档(非CDH集群)
https://tez.apache.org/install.html

CDH集群下安装tez
https://gist.github.com/epiphani/dd37e87acfb2f8c4cbb0

几种常见错误
https://cwiki.apache.org/confluence/display/TEZ/Build+errors+and+solutions
http://www.leocook.org/2016/05/09/Tez%E7%B3%BB%E5%88%97%E7%AC%AC%E4%BA%8C%E7%AF%87-hive_on_tez/

JouyPub wechat
欢迎订阅「K叔区块链」 - 专注于区块链技术学习