简介
tez全表查询时需要每个分区都存在,否则回报错,比如left join
编译,安装依赖
1、maven安装
1 | > wget http://download.nus.edu.sg/mirror/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz |
再把mvn命令配置到/etc/profile
文件中
2、protoc安装
1 | > wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.gz |
可能会缺少依赖,建议编译前先吧所有的依赖都装上 yum groupinstall -y "Development Tools"
3、tez
1 | > wget http://download.nus.edu.sg/mirror/apache/tez/0.8.3/apache-tez-0.8.3-src.tar.gz |
编译后的包在tez-dist/target/
目录下
配置,以下是CDH的安装配置步骤,如果不是CDH请参考官方安装文档
hadoop新建目录
hadoop fs -mkdir /apps/tez-0.8.3/
上传 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/
新建tez目录
mkdir /usr/lib/tez
复制文件到tez目录
cp -r tez-dist/target/tez-0.8.3-minimal/* /usr/lib/tez
在tez目录下新建文件tez-site.xml,内容如下
1
2
3
4
5
6
7
8
9
10
11
<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>配置环境变量
1
2
3export 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}使用,可以全局设置tez为执行引擎,也可以hive查询时再设置,以下时hive查询时设置
1
set hive.execution.engine=tez;
常见错误
如果是root用户执行编译会报错,修改 tez-ui/pom.xml 文件,在exec-maven-plugin 标签下新增
–allow-root
(安装期间编译tez-ui2仍然报错,就把pom.xml中的tez-ui2 model给注释掉了,所以web页面会用不了)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/