Hive简介

Hive是基于hadoop的一个数据仓库,可以将sql语句转化为MapReduce任务进行运行,不必要专门开发MapReduce,Hive定义了简单的类SQL,即HQL,可以用来对数据进行ETL(提取转化加载)操作。

一 . 安装前准备

Hive是基于hadoop的,所以首先要安装好hadoop集群,至于安装hadoop可以参考,如和选择版本,在官网上http://hive.apache.org/downloads.html有说明。

二.安装hive

1. 下载(hadoop用户没有权限就用root下载)并解压安装

ps:本来想下载hive-2.3.5,但是在官网上没有找到,只好下载了hive-2.3.6,当然,也可以下载好在传上去

cd /opt/software/
wget http://mirror.bit.edu.cn/apache/hive/hive-2.3.6/apache-hive-2.3.6-bin.tar.gz
tar -zxvf apache-hive-2.3.6-bin.tar.gz -C /opt/bigdata/
cd /opt/bigdata/
mv apache-hive-2.3.6-bin hive-2.3.6  #名字可以不改,
chown -R hadoop:hadoop hive-2.3.6/  #如果是root用户安装,则需要修改用户
2.配置环境变量,并使之生效

用root用户编辑/etc/profile

#set hive
export HIVE_HOME=/opt/bigdata/hive-2.3.6
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

并source使之生效

source /etc/profile
hive --version #成功之后会显示出hive的版本号
3.修改配置文件

需要修改/opt/bigdata/hive-2.3.6/conf下的配置文件,提供的都是模板文件,首先需要复制出真正的配置文件

cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
cp hive-log4j2.properties.template hive-log4j2.properties

修改hive-env.sh

#指定hadoop安装路径
HADOOP_HOME=/opt/bigdata/hadoop-2.8.5/
#指定hive的配置文件路径
export HIVE_CONF_DIR=/opt/bigdata/hive-2.3.6/conf/
#指定hive运行的类库目录
export HIVE_AUX_JARS_PATH=/opt/bigdata/hive-2.3.6/lib/

修改hive-site.xml
最主要的就是配置数据库,存储元数据,可以配置本地或远程的数据库,内嵌的一般不用,主要修改以下数据库连接参数。还有需要配置目录的需要手动创建目录,并修改属组,在hive-site.xml中"hadoop hive生态安装 hadoop集群安装hive_java{system:user.name}"值需要修改成本地路径目录。HDFS中的目录即使配置了会自动生成,也可以使用默认值。

<!-- 数据库参数 -->
    <property>
    	<!-- 数据库用户名 -->
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
    	<!-- 数据库用户名 -->
        <name>javax.jdo.option.ConnectionPassword</name>密码
        <value>123456</value>
    </property>
   <property>
   		<!-- 数据库访问地址,需要提前创建好msshive -->
        <name>javax.jdo.option.ConnectionURL</name>mysql
        <value>jdbc:mysql://192.168.3.187:3306/msshive?characterEncoding=utf8&useSSL=false</value>
    </property>
    <property>
    	<!-- 数据库驱动 -->
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    
<!-- warehouse目录,即hive在HDFS上的存储目录,可使用默认值 -->    
	    <property>
	   		 <name>hive.metastore.warehouse.dir</name>
	    	 <value>/zixingHive/warehouse</value>
	   </property>
	  
<!-- hive运行的临时数据目录 -->
		<property>
		  <name>hive.exec.scratchdir</name>
		  <value>/zixingHive/hive</value>
		</property>
		<property>
		  <name>hive.exec.local.scratchdir</name>
		  <value>/usr/bigdata/hive/scratch</value>
		</property>
  <!-- hive日志目录 -->
	 <property>
	     <name>hive.querylog.location</name>
	  	 <value>/opt/bigdata/hive-2.3.6/logs</value>
	  </property>

hive-exec-log4j2.properties

#手动创建目录,其属组需要修改成hive的安装用户
property.hive.log.dir = /bigdataLog/hive/exec-hiveLog4j2/

hive-log4j2.properties

#手动创建目录,其属组需要修改成hive的安装用户
property.hive.log.dir = /bigdataLog/hive/hiveLog4j2/
4.初始化元数据
schematool -initSchema -dbType mysql

在/opt/bigdata/hive-2.3.6/lib下一定要有mysql-connector-java-5.1.47.jar,需要自己添加到/opt/bigdata/hive-2.3.6/lib/,可以用以下命令查看

ll /opt/bigdata/hive-2.3.6/lib/ | grep mysql

hadoop hive生态安装 hadoop集群安装hive_hadoop hive生态安装_02


如果没有这个jar包,报错如下图

hadoop hive生态安装 hadoop集群安装hive_大数据_03


初始化成功会有如下图显示,在数据库中也会有许多存放元数据的表

hadoop hive生态安装 hadoop集群安装hive_java_04


hadoop hive生态安装 hadoop集群安装hive_大数据_05


初始化会遇到一些问题,看提示一般就可以解决掉的,如果遇到找不到主机的,可以参考博客,这个mysql是安装在windows10上的

5.验证
hive #进入hive命令行

hadoop hive生态安装 hadoop集群安装hive_大数据_06


与mysql类似

hadoop hive生态安装 hadoop集群安装hive_mysql_07


在进入hive命令行时一直报错

hadoop hive生态安装 hadoop集群安装hive_hive_08


报错详情:Logging initialized using configuration in jar:file:/opt/bigdata/hive-2.3.6/lib/hive-common-2.3.6.jar!/hive-log4j2.properties Async: true

Exception in thread “main” java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: KaTeX parse error: Expected '}', got 'EOF' at end of input: …a.io.tmpdir%7D/%7Bsystem:user.name%7D

原因就是在hive-site.xml, hive-exec-log4j2.properties或

hive-log4j2.properties中的路径存在"hadoop hive生态安装 hadoop集群安装hive_java{system:user.name}",手动创建目录并配置之后就好。