Hive引擎Tez

环境: System: CentOS Linux release 7.6.1810 (Core) Hadoop: 2.9.2

Java: jdk 1.8.0_211 Hive: 2.3.6 tez: 0.9.2

编译依赖: protobuf: protobuf-2.5.0

编译工具安装: yum install -y gcc-c++ openssl-devel glibc autoconf automake libtool

首先到官网下载tez0.9.2-sec.tar.gz源码包

https://mirrors.tuna.tsinghua.edu.cn/apache/tez/0.9.2/

也可以直接下载二进制包,解压后可跳过此步骤

1.安装protobuf-2.5.0

cd protobuf-2.5.0  
./configure  
make  
make install  
使用protoc --version 验证是否成功

2.解压源码包

3.修改配置: vim pom.xml

4.使用maven编译

mvn clean package -DskipTests=true -Dmaven.javadoc.skip=true

跟Hadoop、Hive整合

1.进入./tez-dist/target

2.将tez-0.9.2.tar.gz压缩包上传到HDFS上:/tez-0.9.2

3.在TEZ_HOME下创建conf目录并编辑tez-site.xml

mkdir conf vim tez-site.xml

4.将tez-0.9.2移动到想要的位置并配置环境变量

export TEZ_HOME=path/tez-0.9.2 export TEZ_CONF_DIR=$TEZ_HOME/conf 1. 编辑Hadoop配置 cd $HADOOP_HOME/etc/hadoop vim hadoop-env.sh

进入hive设置

set hive.execution.engine=tez;

执行语句进行测试 select uid,count(1) from test group by uid;

配置Hive默认引擎

vim $HIVE_HOME/conf/hive-site.xml

问题

1.找不到DAG类

二进制包需要上传 $TEZ_HOME/share/tez.tar.gz

2.机器内存不足

出现类似下面的报错信息

vim $TEZ_CONF_DIR/tez-site.xml

3.tez-ui

修改 apache-tez-0.9.2-src/tez-ui/pom.xml文件, 在<artifactId>exec-maven-plugin</artifactId>下面的<arguments></arguments>中 追加<argument>--allow-root</argument>,如下部分:

4.tez-mapreduce编译错误

修改apache-tez-0.9.2-src/tez-mapreduce/src/main/java/org/apache/tez/mapreduce/hadoop/mapreduce/JobContextImpl.java文件:在最后追加下面代码

5.整合lzo

拷贝lzo包到解压后的lib目录

cp hadoop-lzo/target/hadoop-lzo-0.4.21-SNAPSHOT.jar $TEZ_HOME/lib

重新打包 tez

cd $TEZ_HOME tar -zcf tez-0.9.2.tar.gz ./

更新hdfs上的tez包

hadoop fs -rm /tez-0.9.2/tez-0.9.2.tar.gz hadoop fs -put ./ tez-0.9.2.tar.gz /tez-0.9.2/

Last updated

Was this helpful?