Hive安装与配置
hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
Hive的安装
所有Hadoop的子项目,如Hive, Pig,和HBase 支持Linux的操作系统。且在Hive安装之前,Java和Hadoop必须在系统上已经安装。使用下面的命令来验证是否已经安装Java和Hadoop
验证Java
java -version
如果Java已经安装在系统上,就可以看到如下回应
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
验证Hadoop
hadoop version
如果Hadoop已经安装在系统上,就可以看到如下回应
Compiled by stevel on 2018-07-18T22:47Z
Compiled with protoc 2.5.0
From source with checksum 792e15d20b12c74bd6f19a1fb886490
This command was run using /opt/hadoop-2.7.7/share/hadoop/common/hadoop-common-2.7.7.jar
java和hadoop的安装可以自行查阅,本文主要讲述Hive的安装配置
下载Hive
hive官网地址:http://hive.apache.org/
文档查看地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted
下载地址:http://archive.apache.org/dist/hive/
我这里使用的是hive-2.3.4
,下载完成后使用远程工具传输到linux下,我习惯放在/usr/local/src/software下
安装目录选在/opt目录,这里按照你自己的习惯指定就好
解压安装
命令行输入
tar -zxvf /usr/local/src/software/apache-hive-2.3.4-bin.tar.gz -C /opt/
进行解压,-C 指定解压到哪个路径
配置环境变量
环境变量看个人寻求,如果想所有用户可用就配置在/etc/profile
,如果想当前用户可用就配置在/home/用户名/profile
我使用root用户进行操作,配置仅root用户可用,那就直接配置在/root/profile
使用vi编辑
vi /root/profile
添加
# 路径按照你hive安装的实际路径配置
export HIVE_HOME=/opt/hive-2.3.4
export PATH=$PATH:$HIVE_HOME/bin
配置完成后需要使环境变量文件生效,在命令行输入
# 按照你实际配置的环境变量文件
source /root/profile
配置Hive
修改hive-env.sh
进入hive安装目录下,重命名conf
目录下hive-env.sh.template
为hive-env.sh
[root@master ~]# cd /opt/hive-2.3.4/conf
[root@master conf]# mv hive-env.sh.template hive-env.sh
编辑hive-env.sh
,添加HADOOP_HOME
[root@master conf]# vim hive-env.sh
# 按照你hadoop实际安装目录来
export HADOOP_HOME=/usr/local/src/hadoop
修改hive-site.xml
进入hive安装目录下,重命名conf
目录下hive-default.xml.template
为hive-site.xml
[root@master ~]# cd /opt/hive-2.3.4/conf
[root@master conf]# mv hive-default.xml.template hive-site.xml
配置hive-site.xml
其实hive配置完hive-env.sh其实就可以使用了,但是Metastore默认存储在自带的derby数据库中,
推荐使用MySQL存储 Metastore,因为derby不能多用户共享
编辑hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<!--连接地址 master处可为主机名或Ip hive为hive在元数据库中的库名-->
<!--createDatabaseIfNotExist=true 当数据库不存在时创建-->
<!--useSSL=false MySQL在高版本需要指明是否进行SSL连接-->
<!--Xml文件中不能使用&,要使用他的转义&来代替-->
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</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>
<!--连接mysql数据库用户名-->
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456(填写mysql的用户密码,这里是root用户的密码)</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/src/set/hive/tmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/src/set/hive/tmp/local</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/src/set/hive/tmp/resources</value>
</property>
<!--是否开启静态分区-->
<property>
<name>hive.exec.dynamtic.partition</name>
<value>true</value>
</property>
<!--动态分区模式-->
<property>
<name>hive.exec.dynamtic.partition.mode</name>
<value>nosstrict</value>
</property>
<!--所有执行MR的节点最大可以创建动态分区数-->
<property>
<name>hive.exec.max.dynamtic.partitions</name>
<value>100000</value>
</property>
<!--每个执行MR的节点最大可以创建动态分区数-->
<property>
<name>hive.exec.max.dynamtic.partitions.pernode</name>
<value>100000</value>
</property>
<!--是否在控制台打印表头信息-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<!--是否在控制台显示当前数据库-->
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!--配置hive元数据服务-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
</configuration>
初始化元数据
命令行输入
schematool -initSchema -dbType mysql
成功截图
若报错可参考 Hive初始化元数据常见报错
启动Hive
配置hive元数据服务后,使用hive需要先开启hive的 metastore元数据服务。
客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可
hive --service metastore &
开启元数据服务后会话被阻塞,需要另外在开启窗口会话,你也可以使用nohup开启服务
nohup hive --service metastore &
命令行输入hive
进入hive
测试
查询数据库
创建测试表
向表中插入数据
查询测试表
到这里,hive的安装与配置就完成了!