banner.webp

1.Hive概述

  1. Hive最初是由FaceBook开发的,后来由Apache软件基金会开发,并作为Apache的一个顶级开源项目。Hive基于Hadoop,专为联机分析处理(OLAP)设计,但由于Hadoop MapReduce不是实时的,所以Hive并不适合联机事务处理(OLTP)业务。Hive的最佳使用场合是大数据集的批处理作业。

2.Hive的定义

  1. Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转换加载(Extract-Transform-LoadETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为Hive QL,简称HQL,它允许熟悉SQL的用户查询数据。
  2. 同时,这个语言也允许熟悉MapReduce的开发者开发自定义的MapperReducer程序来处理内建的MapperReducer无法完成的复杂的分析工作。Hive没有专门的数据格式,可以很好的工作在Thrift之上。

3.搭建Hive运行环境

  1. Hive因为运行在Hadoop之上,所以首先要安装Hadoop运行环境,可以查看这篇文章:[搭建Hadoop伪分布式环境](https://www.yuque.com/happydragon1994/eoaqvb/ibvu36)
  2. 首先我们进入到Hive的官网,查找Hadoop版本与Hive版本的对应关系,官网地址:[https://hive.apache.org/downloads.html](https://hive.apache.org/downloads.html)<br />![1.png](https://cdn.nlark.com/yuque/0/2022/png/1751730/1654485794192-f40314a5-1c55-4641-96e3-54dac39d71a6.png#clientId=u62f6a28b-0bf8-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=u849e4365&margin=%5Bobject%20Object%5D&name=1.png&originHeight=936&originWidth=1244&originalType=binary&ratio=1&rotation=0&showTitle=false&size=133215&status=done&style=none&taskId=u8b2ba034-19d7-4513-b0af-9903b5d6114&title=)<br />因为我的Hadoop版本是3.3.3,所以这里选择3.1.3的Hive,下载地址:https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz,然后利用FTP工具将压缩包上传到/usr/local目录下,执行以下命令
  1. tar -xvf apache-hive-3.1.3-bin.tar.gz
  2. mv apache-hive-3.1.3-bin hive

然后配置环境变量,修改/etc/profile文件中的PATH,修改后的文件如下:
2.png
然后我们使用source使环境变量立即生效

  1. source /etc/profile

然后我们安装MySQL,Hive默认使用内嵌的Derby数据库作为存储引擎,存储Hive的元数据信息,但是Derby引擎的缺点是一次只能打开一个会话,不能多用户并发访问。所以我们使用MySQL作为Hive的存储引擎。安装MySQL的方式很多,我这里选择在线安装MySQL,首先我们配置谷歌域名服务器

  1. vi /etc/resolv.conf

添加以下内容:

  1. nameserver 8.8.8.8
  2. nameserver 8.8.4.4

然后我们利用wget命令下载

  1. wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

3.png
然后使用yum本地安装

  1. yum localinstall mysql57-community-release-el7-7.noarch.rpm

4.png
安装MySQL Server

  1. yum install mysql-community-server

这里可能遇到:mysql-community-common-5.7.38-1.el7.x86_64.rpm 的公钥尚未安装的问题,解决方法为:

  1. rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  2. yum install mysql-community-server

然后我们启动MySQL并配置开机自启

  1. systemctl start mysqld
  2. systemctl enable mysqld
  3. systemctl daemon-reload

然后我们修改本地root的登陆密码,MySQL5.7安装完成后,在/var/log/mysqld.log文件中给root生成了一个默认密码,通过以下命令我们查看默认密码,然后利用该密码登陆后进行密码修改

  1. grep 'temporary password' /var/log/mysqld.log
  2. mysql -uroot -p

5.png
此时我们已经成功登陆到MySQL之中

然后执行这行命令

  1. ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newpassword2022!!!';

此时,我们的密码就改为了Newpassword2022!!!

我们创建一个Hive的用户

  1. CREATE USER 'hive1'@'%'IDENTIFIED BY 'Newpassword2022!!!';

然后授权

  1. GRANT ALL PRIVILEGES ON *.* TO 'hive1'@'%' IDENTIFIED BY 'Newpassword2022!!!';
  2. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Newpassword2022!!!';

刷新权限

  1. FLUSH PRIVILEGES;

然后配置默认编码为utf8,修改/etc/my.cnf文件,加入这两行
6.png
然后重启MySQL服务即可

  1. systemctl restart mysqld

然后我们开始配置Hive的配置文件,切换到/usr/local/hive/conf,分别将配置模板文件改名后,进行配置

  1. cd /usr/local/hive/conf
  2. mv hive-env.sh.template hive-env.sh
  3. mv hive-default.xml.template hive-site.xml

在/usr/local/hive/bin目录下的hive-config.sh文件末尾添加下面三行配置,明确Java、Hadoop、Hive的安装目录

  1. export Java_HOME=/usr/java/jdk1.8.0_281-amd64
  2. export HADOOP_HOME=/usr/local/hadoop
  3. export HIVE_HOME=/usr/local/hive

然后从网上下载mysql-connector-Java-5.1.45-bin.jar,复制到/usr/local/hive/lib目录下

下载地址为: https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.45.zip

然后创建一个临时目录

  1. mkdir /usr/local/hive/tmp

然后配置/usr/local/hive/conf中的hive-site.xml文件支持MySQL,修改ConnectionURL、ConnectionDriverName、ConnectionUserName、ConnectionPassword四个属性的值,将默认的Derby数据库改为MySQL数据库连接配置

  1. <property>
  2. <name>Javax.jdo.option.ConnectionURL</name>
  3. <value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true</value>
  4. </property>
  5. <property>
  6. <name>Javax.jdo.option.ConnectionDriverName</name>
  7. <value>com.mysql.jdbc.Driver</value>
  8. </property>
  9. <property>
  10. <name>Javax.jdo.option.ConnectionUserName</name>
  11. <value>root</value>
  12. </property>
  13. <property>
  14. <name>Javax.jdo.option.ConnectionPassword</name>
  15. <value>Newpassword!!!</value>
  16. </property>
  1. 然后配置hive-site.xml中:
  2. 所有的${system:Java.io.tmpdir}为/usr/local/hive/tmp,共有四处;
  3. 所有的${system:user.name}为root,共三处。

然后我们开始验证Hive

  1. schematool -dbType mysql -initSchema

如果出现下图问题
7.png
解决方法如下,注释掉hive-site.xml文件中的该部分即可
8.png
然后重新执行命令

然后我们先启动Hadoop,再启动Hive
9.png
上面的提示很明显,MySQL的SSL问题,如果不想有这个警告出现,只需要在hive-site.xml中的jdbc链接后面加上useSSL=false即可,如果还有其他配置,则需要用&隔开,因为&在xml中是非法字符,需要转换为实体语句,如下:
image.png
然后我们输入命令show tables如果没有报错,则安装成功
10.png
自此,我们的Hive环境已经成功搭建好了~,接下来会再熟悉一下Hive的用法已经HQL的使用