由于各个集群之间都需要使用tez,而将tez分发到各个集群,又很浪费磁盘空间,
所以我们可以将 tez的tar.gz包上传到 hdfs上面供各个机器使用
第二步:hadoop fs -mkdir /tez
hadoop fs -put /opt/software/apache-tez-0.9.1-bin.tar.gz /tez
将tez的tar.gz包进行解压后, 进入到hive/conf下
vim tez-site.xml
第三步:tez.lib.uris ${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz tez.use.cluster.hadoop-libs true tez.history.logging.service.class org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService
将tez的路径配置到hive的环境变量中:
vim hive-env.sh # 在最后面加上一下内容
export TEZ_HOME=/opt/module/tez-0.9.1 #是你的tez的解压目录
export TEZ_JARS=""
#读取到tez下的jar包
for jar in `ls $TEZ_HOME |grep jar`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
for jar in `ls $TEZ_HOME/lib`; do
export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/lib/$jar
done
# 配置支持lzo压缩
export HIVE_AUX_JARS_PATH=/opt/module/hadoop/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS
第四步:
配置hive-site.xml:加上下面内容,更换为tez引擎
hive.execution.engine tez
到这里基本上就配置完成了, 可以去创建个表插入一条数据试一试是否能够执行成功
问题1: 出现Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask
原因: 可能是tez的版本为1.0以下,而hive的版本为3.0以上的,会造成版本不兼容问题
第一种解决方案: 将hive版本降为2.0的
第二种解决方案:
修改tez文件中的属性:
vi tez-default-template.xml
修改下面的属性为false
tez.client.asynchronous-stop false Boolean value. Backwards compatibility setting. Changes TezClient stop to be a synchronous call waiting until AM is in a final state before returning to the user. Expert level setting. boolean
然后将tez重新进行打包, 上传到hdfs的路径上, 记得与第二步中的tez-site.xml文件的中的路径进行匹配上
这样这个问题就可以解决了!.,希望能帮到你们!!!
问题2: 内存不足问题.原因: 这是因为yarn的虚拟内存检查模式太过于霸道
解决:yarn-site.xml加上下面内容
yarn.nodemanager.vmem-check-enabled false
注意: 更改后记得进行分发, 并将集群进行重新启动



