前言——Hive介绍

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过和SQL类似的HiveQL语言快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。

Hive 没有专门的数据格式。所有Hive 的数据都存储在Hadoop兼容的文件系统(例如HDFS)中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。

附一张hadoop的生态圈图

安装hive

hive的安装基于之前的搭建的hadoop完全分布式集群,只需要安装在hadoop102上就行

安装hive版本
hive-1.1.0

上传解压hive

我们将hive上传到/opt/software下,之后将其解压到/opt/module/

解压代码如下

tar -zxf apache-hive-1.1.0-bin.tar.gz -C /opt/module/

解压完成后我们修改hive的文件名

mv apache-hive-1.1.0-bin.tar.gz hive-1.1.0

修改文件名是为了让我们在配置环境变量时更加的方便

配置环境变量

在/etc/profile文件的最后添加

export HIVE_HOME=/opt/module/hive-1.1.0
export PATH=$PATH:$HIVE_HOME/bin

配置完成后,记得保存使其生效

输入

source /etc/profile

安装mysql

hive它有自己的内置数据库derby,但是hive 使用derby 数据库存在不支持多个连接的问题,所以我们一般会使用mysql来代替hive的元数据库

我们的mysql版本为5.7.18,安装文件如下:
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-server-5.7.18-1.el7.x86_64.rpm


我们按照顺序安装即可
注之前的liunx带的MariaDB要卸载
[root@master ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.52-2.el7.x86_64
然后卸载
[root@master ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64


[root@master 5.7.18]#rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm

[root@master 5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
[root@master 5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rp
m
[root@master 5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rp
m

安装之后查看安装情况
[root@master 5.7.18]# rpm -qa | grep mysql
mysql-community-common-5.7.18-1.el7.x86_64
mysql-community-client-5.7.18-1.el7.x86_64
mysql-community-libs-5.7.18-1.el7.x86_64
mysql-community-server-5.7.18-1.el7.x86_64

之后自己修改一下mysql的密码即可
修改过程可以看这个博客 https://blog.csdn.net/qq_35354260/article/details/83182900
[root@master ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


安装完成

同时我们还需要去网上下载mysql的驱动包(mysql-connector-java-5.1.26.jar)把这个驱动包放置在hive目录下的lib目录下。



同时我们还需要去网上下载mysql的驱动包(mysql-connector-java.jar)把这个驱动包放置在hive目录下的lib目录下。

修改hive-site.xml

hive的配置文件放置在/opt/module/hive-1.1.0/conf下

配置hive-site.xml(conf中可能没有这个文件,我们使用vim打开时,没有的话,vim会帮我们自动创建)

vim hive-site.xml 

在文件中添加

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>


<configuration>


<property>
<name>javax.jdo.option.ConnectionURL</name>
<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>
<value>root</value>
<description>username to use against metastore database</description>
</property>


<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hivepwd</value>
</property>

<property>
<name>hive.exec.scratchdir</name>
<value>/opt/module/hive-1.1.0/tmp</value>
</property>

<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/module/hive-1.1.0/tmp/local</value>
</property>

<property>
<name>hive.downloaded.resources.dir</name>
<value>/opt/module/hive-1.1.0/tmp/resources</value>
</property>

修改hive-env.sh

[root@hadoop102 conf]# mv hive-env.sh.template hive-env.sh

在文件最后添加

export JAVA_HOME=/opt/module/jdk1.8.0_191
export HADOOP_HOME=/opt/module/hadoop-2.7.2

配置mysql

初始化mysql

[root@master hive-1.1.0]#  schematool -initSchema -dbType mysql

显示如下就是成功

mark

这样
Hive 的元数据库就配置完成

注:如果没成功的话.可能是hadoop目录下的**/share/hadoop/yarn/lib/** 中的jline-0.9.94.jar文件太老了,我们需要将hive的lib中的jline-2.12.jar放到hadoop的/share/hadoop/yarn/lib/中,同时将老版本的jline删除

另外注:如果hive的初始化失败,可能是在mysql中没赋权的原因,需要在mysql中配置

mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;

才能顺利初始化

测试hive安装是否成功

启动Hadoop与mysql

输入hive

进入hive,出现命令行就说明之前搭建是成功的

[root@Hadoop102 ]# hive
hive>

测试

进入
Hive 命令行 执行命令 创建一个名为 test 的表 查询该表的记录数:

create table test(id int);
select count(*) from test;

如果查询结果为0,则成功

到这里,hive的安装也就完成了,谢谢大家的阅读。