Hive3配置tez引擎
1. 下载
下载地址:https://dlcdn.apache.org/tez/,选择带-bin
的,此处下载apache-tez-0.10.1-bin.tar.gz
2. 解压
hive在哪个节点上,就解压到哪个节点
tar -zxvf apache-tez-0.10.1-bin.tar.gz -C /opt/
# 重命名(可选)
mv /opt/apache-tez-0.10.1-bin/ /opt/tez-0.10.1/
3. 上传tez包到HDFS
tez解压到了hive节点上,那hive自然是可以使用到tez引擎,但在Hadoop集群上执行任务的时候,所有的节点都需要进行计算,因此也需要将tez上传到hdfs上,供其他节点使用
hdfs dfs -mkdir /tez
hdfs dfs -put ./apache-tez-0.10.1-bin.tar.gz /tez
查看hdfs确认上传成功
4. 配置tez-site.xml
在hive
的conf
目录下新建tez-site.xml
,内容为如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hdfs上tez包的路径 -->
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/apache-tez-0.10.1-bin.tar.gz</value>
</property>
<!-- tez可使用集群jar包 -->
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<!-- 日志形式 -->
<property>
<name>tez.history.logging.service.class</name>
<value>org.apache.tez.dag.history.logging.ats.ATSHistoryLoggingService</value>
</property>
</configuration>
5. 配置hive-env.sh
hive
的conf
目录自带一个hive-env.sh.template
,复制一个即可
cp hive-env.sh.template hive-env.sh
在hive-env.sh
末尾追加一下内容:
export TEZ_HOME=/opt/tez-0.10.1 # tez解压目录,仅需要改动此处
export TEZ_JARS=""
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
export HIVE_AUX_JARS_PATH=${TEZ_JARS:1}
6. 修改hive-site.xml
修改hive引擎为tez,修改tez容器大小
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
<property>
<name>hive.tez.container.size</name>
<value>1024</value>
</property>
7. 修改yarn-site.xml
关闭yarn的虚拟内存检查,否则tez无法执行任务
<!-- 关闭yarn虚拟内存检查 -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
记得要把所有hadoop节点的yarn-site.xml
都同步
8. 重启hadoop集群
mapred --daemon stop historyserver && stop-yarn.sh && stop-dfs.sh
start-dfs.sh && start-yarn.sh && mapred --daemon start historyserver
9. 测试tez是否切换成功
create table student(id string, name string);
insert into student values('1001', 'hello');
tez切换正常
10. 其它情况
- 如果hive执行任务一直处于
INITED
状态,看是不是tez容器太大了 - yarn执行任务过多占满资源,通过
yarn app -list
,yarn app -kill <applicationId>
把任务先kill掉再测试tez引擎