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

hiveconf目录下新建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

hiveconf目录自带一个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. 其它情况

  1. 如果hive执行任务一直处于INITED状态,看是不是tez容器太大了
  2. yarn执行任务过多占满资源,通过yarn app -listyarn app -kill <applicationId>把任务先kill掉再测试tez引擎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章