1.背景
公司的生产环境是hadoop2.5.0-cdh5.3.9,因为业务数据增长的原因,Hive MapReduce的查询速度不令人满意了,想要更换为计算引擎Tez。
2.编译
在当前日期的Tez官网上没有对应Hadoop版本编译好的bin压缩包。需要下载src包进行编译,Hadoop2.5.0在查找多个Tez版本后发现0.5.4版本的Tez对应Hadoop版本为2.4.0,因为向下兼容的原因,Hadoop2.5.0是可以编译次版本Tez,而Tez从0.6.0版本都是Hadoop2.6.0,所以Tez编译时会报一些,资源找不到和Class和函数找不到的错误,最终选择Tez0.5.4版本
编译环境
Centos6.5 ,Maven3版本以上,ProtocolBuffer 2.5.0,jdk1.7+
这些环境配置都可以在网上找到
Tez src包解压后
修改pom.xml
把hadoop.version版本修改为2.5.0
修改Maven的SnapShots地址,原地址实在太慢,换成阿里的镜像就好多了
<distMgmtSnapshotsUrl>http://maven.aliyun.com/nexus/content/groups/public</distMgmtSnapshotsUrl>
在src目录下
mvn clean package -Dtar -DskipTests=true -Dmaven.javadoc.skip=true
成功后压缩包在tez-dist/target目录下
3.配置
Tez on Hive配置上网上找一找也能找到
先新建一个hdfs目录,把压缩包传上去
新建一个tez-site.xml,配置tez.lib.uris目录,把tez-site.xml放到Hadoop的conf目录下,Hive的目录下,反正Hive启动得能找到他
在tez-dist/target/tez-0.5.4目录下的jar包全部拷贝到hive的lib目录下
我的是/opt/cloudera/parcels/CDH/lib/hive/lib/
启动Hive,set hive.execution.engine=tez;
写个查询sql查一下,出现进度条就是表明使用Tez了