文章目录
Hive 的安装之 Tez 引擎的安装
5、安装 Tez 引擎
- Tez 是一个 Hive 的运行引擎,性能优于MR。
-
用 Hive 直接编写MR程序,假设有四个有依赖关系的MR作业,上图中,绿色是Reduce Task,云状表示写屏蔽,需要将中间结果持久化写到 HDFS。
-
Tez 可以将多个有依赖的作业转换为一个作业,这样只需写一次 HDFS,且中间节点较少,从而大大提升作业的计算性能。
5.1 将 tez 安装包拷贝到集群,并解压 tar 包
[xiaoxq@hadoop105 ~]$ mkdir -p /opt/module/tez
[xiaoxq@hadoop105 ~]$ tar -zxvf /opt/software/tez-0.10.1-SNAPSHOT-minimal.tar.gz -C /opt/module/tez
5.2 上传 tez 依赖到 HDFS
[xiaoxq@hadoop105 software]$ hadoop fs -mkdir /tez
[xiaoxq@hadoop105 software]$ hadoop fs -put /opt/software/tez-0.10.1-SNAPSHOT.tar.gz /tez
5.3 新建 tez-site.xml
[xiaoxq@hadoop105 hadoop]$ pwd
/opt/ha/hadoop-3.1.3/etc/hadoop
[xiaoxq@hadoop105 hadoop]$ vim tez-site.xml
- 添加如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>tez.lib.uris</name>
<value>${fs.defaultFS}/tez/tez-0.10.1-SNAPSHOT.tar.gz</value>
</property>
<property>
<name>tez.use.cluster.hadoop-libs</name>
<value>true</value>
</property>
<property>
<name>tez.am.resource.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>tez.am.resource.cpu.vcores</name>
<value>1</value>
</property>
<property>
<name>tez.container.max.java.heap.fraction</name>
<value>0.4</value>
</property>
<property>
<name>tez.task.resource.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>tez.task.resource.cpu.vcores</name>
<value>1</value>
</property>
</configuration>
5.4 修改 Hadoop 环境变量
[xiaoxq@hadoop105 hadoop]$ vim $HADOOP_HOME/etc/hadoop/shellprofile.d/tez.sh
- 添加Tez的Jar包相关信息
hadoop_add_profile tez
function _tez_hadoop_classpath
{
hadoop_add_classpath "$HADOOP_HOME/etc/hadoop" after
hadoop_add_classpath "/opt/module/tez/*" after
hadoop_add_classpath "/opt/module/tez/lib/*" after
}
5.5 修改 Hive 的计算引擎
[xiaoxq@hadoop105 hadoop]$ vim $HIVE_HOME/conf/hive-site.xml
- 添加
<property>
<name>hive.execution.engine</name>
<value>tez</value>
</property>
<property>
<name>hive.tez.container.size</name>
<value>1024</value>
</property>
5.6 尝试调节容量调度器的资源调度策略
- 如果更换 Tez 引擎后,执行任务卡住,可以尝试调节容量调度器的资源调度策略
- 将$HADOOP_HOME/etc/hadoop/capacity-scheduler.xml文件中的
[xiaoxq@hadoop105 hadoop]$ vim $HADOOP_HOME/etc/hadoop/capacity-scheduler.xml
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.1</value>
<description>
Maximum percent of resources in the cluster which can be used to run
application masters i.e. controls number of concurrent running
applications.
</description>
</property>
- 改成
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>1</value>
<description>
Maximum percent of resources in the cluster which can be used to run
application masters i.e. controls number of concurrent running
applications.
</description>
</property>
5.7 JVM堆内存溢出
(tez 需要的内存比较大,并且会对虚拟内存有个校验)
- 解决:在yarn-site.xml中加入如下代码
[xiaoxq@hadoop105 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
5.8 解决日志 Jar 包冲突
[xiaoxq@hadoop105 software]$ mv /opt/module/tez/lib/slf4j-log4j12-1.7.10.jar /opt/module/tez/lib/slf4j-log4j12-1.7.10.bak