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?