我是靠谱客的博主 繁荣小丸子,最近开发中收集的这篇文章主要介绍高版本hive中集成Tez以及配置代理和允许通过web端口访问hdfs前言,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

hive经常用于数仓,但是由于他的计算引擎(默认是MR)不支持DAG(Directed Acyclic Graph)DAG解释,所以导致效率低下,所以一般生产中用集成Tez详细配置解析,笔者就在这里简单的记录下配置。
这里提供一个hive基础详解点这里!!!基础详解

解压安装

  • 将apache-tez-0.9.1-bin.tar.gz上传到HDFS的/tez目录下。
  • 这一步是因为tez是在yarn上运行Tezjob,但是如果只装在一台机器上,可能分配到没有装tez的nodemanager节点上运行。所以为了使nodemanager在运行时封装container里有tez的jar包,所以要利用分布式缓存技术来加载Tez!此外,分布式缓存有自动解归档技术,所以只需要将压缩包上传就可以达到目的!
[zhengkw@hadoop102 conf]$ hadoop fs -mkdir /tez
[zhengkw@hadoop102 conf]$ hadoop fs -put /opt/software/apache-tez-0.9.1-bin.tar.gz/ /tez
  • 解压缩apache-tez-0.9.1-bin.tar.gz
[zhengkw@hadoop102 software]$ tar -zxvf apache-tez-0.9.1-bin.tar.gz -C /opt/module
  • 修改名称
[zhengkw@hadoop102 module]$ mv apache-tez-0.9.1-bin/ tez-0.9.1

配置Tez-site

  • 在Hive的/$HIVE_HOME/conf下面创建一个tez-site.xml文件
 [zhengkw@hadoop102 conf]$ vim tez-site.xml
  • 指定在hdfs上tez的jar放置路径
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- 指定tez分布式缓存路径-->
        <property>
        <name>tez.lib.uris</name>
        <value>${fs.defaultFS}/tez/apache-tez-0.9.1-bin.tar.gz</value>
    </property>
     <!-- 指定tez允许使用hadoop集群上的依赖,并且会自动加载到分布式缓存路径下-->
    <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>

配置hive-env

  • 在hive-env.sh文件中添加tez环境变量配置和依赖包环境变量配置
  • 配置这一步是因为hive编写的hql需要翻译成tezjob才能被tez引擎所解析! 所以如果hive启动时不能加载tez的jar包则无法正常翻译!
[zhengkw@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh
[zhengkw@hadoop102 conf]$ vim hive-env.sh

添加如下配置并且配置tez支持lzo压缩

# Set HADOOP_HOME to point to a specific hadoop install directory
export HADOOP_HOME=/opt/module/hadoop-2.7.2

# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/opt/module/hive/conf

# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export TEZ_HOME=/opt/module/tez-0.9.1    #是你的tez的解压目录
export TEZ_JARS=""
#导出Tez目录下的jar包和lib下面的jar包!
#第一个循环是导出tez家目录下的所有jar 并且是以:开头!
for jar in `ls $TEZ_HOME |grep jar`; do
    export TEZ_JARS=$TEZ_JARS:$TEZ_HOME/$jar
done
#第二个循环导出的是liib下的所有jar在与之前家目录jar进行拼接
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-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar$TEZ_JARS

3)在hive-site.xml文件中添加如下配置,更改hive计算引擎

<property>
    <name>hive.execution.engine</name>
    <value>tez</value>
</property>

代理访问-配置core-site

  • 配置代理访问
<property>
	<name>hadoop.proxyuser.zhengkw.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.zhengkw.groups</name>
	<value>*</value>
</property>

开启允许通过web端访问hdfs-配置hdfs-site

<property>  
	<name>dfs.webhdfs.enabled</name>  
	<value>true</value>  
</property> 

高版本hive中添加thrift协议!

  • hive-site
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<property>
	    <name>javax.jdo.option.ConnectionURL</name>
	    <value>jdbc:mysql://hadoop102:3306/metastore?createDatabaseIfNotExist=true</value>
	    <description>JDBC connect string for a JDBC metastore</description>
	</property>

	<property>
	    <name>javax.jdo.option.ConnectionDriverName</name>
	    <value>com.mysql.jdbc.Driver</value>
	    <description>Driver class name for a JDBC metastore</description>
	</property>

	<property>
	    <name>javax.jdo.option.ConnectionUserName</name>
	    <value>root</value>
	    <description>username to use against metastore database</description>
	</property>

	<property>
	    <name>javax.jdo.option.ConnectionPassword</name>
	    <value>sa</value>
	    <description>password to use against metastore database</description>
	</property>
    
    <property>
         <name>hive.metastore.warehouse.dir</name>
         <value>/user/hive/warehouse</value>
         <description>location of default database for the warehouse</description>
    </property>
    
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>

    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
    
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    
    <property>
        <name>datanucleus.schema.autoCreateAll</name>
        <value>true</value> 
    </property>
    <!-- 高版本需要配置此协议,否则无法正常使用!-->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop102:9083</value>
    </property>
</configuration>

总结

  1. hive在高版本中需要开启thrift协议,否则无法正常使用。启动时需要启动hive里的 --service metastore
  2. 远程访问hive需要启动hiveserver2服务!
  3. 远程访问需要配置代理访问!
  4. 一般启动metastore和hiveserver2服务用后台不挂起的方式运行
nohup hive --service metastore &
nohup hiveserver2 &
  1. tez集成需要将tez的压缩包上传到hdfs并且制定分布式缓存路径与上传路径一致!
  2. 配置tez能够使用hadoop集群依赖
  3. hive将hql翻译成tezjob需要使用tez依赖,所以在hive启动时加载!配置env来满足需求!

最后

以上就是繁荣小丸子为你收集整理的高版本hive中集成Tez以及配置代理和允许通过web端口访问hdfs前言的全部内容,希望文章能够帮你解决高版本hive中集成Tez以及配置代理和允许通过web端口访问hdfs前言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部