3 修改 hadoop-2.6.0/etc/hadoop/hadoop-env.sh
export TEZ_HOME=/usr/local/opt/tez-0.7.0
for jar in `ls $TEZ_HOME |grep jar`; do
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$TEZ_HOME/lib/$jar
done
以上完成了tez的基本配置,接下来有 2 中方法使我们的任务运行在tez上,一种修改
mapreduce-site.xml 设置 yarn 改为 yarn-tez
第二种,修改 hive 直接运行在 tez 上
第三种 hive set tez
———————————————————— hive on tez (单个 job 运行 Tez) ————————————————————
1 将编译好的 tez(编译成功的包会放在tez-dist/target )所有jar 包放入 hive下。
find . -name "*jar" -print | cp -a `xargs` tezlib/
上面命令得到 tez 所有jar 包。
2 hive on tez 的使用方式 配置好以后 进入 hive
hive (default)>set hive.execution.engine=tez;
- set hive.execution.engine=mr 或 退出 hive 即可
3 如果 hive set tez 后运行异常可以启用调试模式启动hive (linux 下进入 hive 启动模式)
hive -hiveconf hive.root.logger=DEBUG,console
—————————————————— Hive on tez 性能测试——————————————————
性能测试:
select a.sex ,b.age , c.* from a join b on a.sex = b.sex join c on a.id ;
3表 各1万 / 169kb
Hive on MapReduce
39分钟 = =!
hive on tez
25分钟 (未发挥最佳性能,因为数据量大量的 IO 都是拉取。并无多 MR)
set hive.execution.engine=tez;
实验 a 164M b 164M c 1.7G d 164M, e 164M
———————————————— hive on MR 3 分 9 秒 ————————————————
———————————————— hive on tez 22.5 秒 ————————————————
———————————————————— hive on tez (所有 job 运行 Tez) ————————————————————
Tez部署完毕后,下载hive0.14.0的二进制文件,解压即可。然后在hive的conf目录下新建hive-site.xml进行常规的配置,如果要是此hive运行在tez上,可以在配置文件中加上:
mapreduce.framework.name
yarn-tez
当然这个配置也能加在mapsite.xml里,建议加在需要hive-site.xml以不影响集群其他hive。
然后打开命令行,首先执行set hive.execution.engine=tez; 这里说下这个配置的含义,
Setting execution engine to mr and framework name to yarn = Hive compiles to MR and runs on MR.
Setting execution engine to mr and framework name to yarn-tez = Hive compiles to MR and runs on Tez.
Setting execution engine to tez = Hive compiles to Tez and runs on Tez.