1.Hive概述
Hive最初是由FaceBook开发的,后来由Apache软件基金会开发,并作为Apache的一个顶级开源项目。Hive基于Hadoop,专为联机分析处理(OLAP)设计,但由于Hadoop MapReduce不是实时的,所以Hive并不适合联机事务处理(OLTP)业务。Hive的最佳使用场合是大数据集的批处理作业。
2.Hive的定义
Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转换加载(Extract-Transform-Load,ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,称为Hive QL,简称HQL,它允许熟悉SQL的用户查询数据。
同时,这个语言也允许熟悉MapReduce的开发者开发自定义的Mapper与Reducer程序来处理内建的Mapper和Reducer无法完成的复杂的分析工作。Hive没有专门的数据格式,可以很好的工作在Thrift之上。
3.搭建Hive运行环境
Hive因为运行在Hadoop之上,所以首先要安装Hadoop运行环境,可以查看这篇文章:[搭建Hadoop伪分布式环境](https://www.yuque.com/happydragon1994/eoaqvb/ibvu36)
首先我们进入到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目录下,执行以下命令
tar -xvf apache-hive-3.1.3-bin.tar.gz
mv apache-hive-3.1.3-bin hive
然后配置环境变量,修改/etc/profile文件中的PATH,修改后的文件如下:
然后我们使用source使环境变量立即生效
source /etc/profile
然后我们安装MySQL,Hive默认使用内嵌的Derby数据库作为存储引擎,存储Hive的元数据信息,但是Derby引擎的缺点是一次只能打开一个会话,不能多用户并发访问。所以我们使用MySQL作为Hive的存储引擎。安装MySQL的方式很多,我这里选择在线安装MySQL,首先我们配置谷歌域名服务器
vi /etc/resolv.conf
添加以下内容:
nameserver 8.8.8.8
nameserver 8.8.4.4
然后我们利用wget命令下载
wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
然后使用yum本地安装
yum localinstall mysql57-community-release-el7-7.noarch.rpm
安装MySQL Server
yum install mysql-community-server
这里可能遇到:mysql-community-common-5.7.38-1.el7.x86_64.rpm 的公钥尚未安装的问题,解决方法为:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
yum install mysql-community-server
然后我们启动MySQL并配置开机自启
systemctl start mysqld
systemctl enable mysqld
systemctl daemon-reload
然后我们修改本地root的登陆密码,MySQL5.7安装完成后,在/var/log/mysqld.log文件中给root生成了一个默认密码,通过以下命令我们查看默认密码,然后利用该密码登陆后进行密码修改
grep 'temporary password' /var/log/mysqld.log
mysql -uroot -p
此时我们已经成功登陆到MySQL之中
然后执行这行命令
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newpassword2022!!!';
此时,我们的密码就改为了Newpassword2022!!!
我们创建一个Hive的用户
CREATE USER 'hive1'@'%'IDENTIFIED BY 'Newpassword2022!!!';
然后授权
GRANT ALL PRIVILEGES ON *.* TO 'hive1'@'%' IDENTIFIED BY 'Newpassword2022!!!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Newpassword2022!!!';
刷新权限
FLUSH PRIVILEGES;
然后配置默认编码为utf8,修改/etc/my.cnf文件,加入这两行
然后重启MySQL服务即可
systemctl restart mysqld
然后我们开始配置Hive的配置文件,切换到/usr/local/hive/conf,分别将配置模板文件改名后,进行配置
cd /usr/local/hive/conf
mv hive-env.sh.template hive-env.sh
mv hive-default.xml.template hive-site.xml
在/usr/local/hive/bin目录下的hive-config.sh文件末尾添加下面三行配置,明确Java、Hadoop、Hive的安装目录
export Java_HOME=/usr/java/jdk1.8.0_281-amd64
export HADOOP_HOME=/usr/local/hadoop
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
然后创建一个临时目录
mkdir /usr/local/hive/tmp
然后配置/usr/local/hive/conf中的hive-site.xml文件支持MySQL,修改ConnectionURL、ConnectionDriverName、ConnectionUserName、ConnectionPassword四个属性的值,将默认的Derby数据库改为MySQL数据库连接配置
<property>
<name>Javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop0:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>Javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>Javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>Javax.jdo.option.ConnectionPassword</name>
<value>Newpassword!!!</value>
</property>
然后配置hive-site.xml中:
所有的${system:Java.io.tmpdir}为/usr/local/hive/tmp,共有四处;
所有的${system:user.name}为root,共三处。
然后我们开始验证Hive
schematool -dbType mysql -initSchema
如果出现下图问题
解决方法如下,注释掉hive-site.xml文件中的该部分即可
然后重新执行命令
然后我们先启动Hadoop,再启动Hive
上面的提示很明显,MySQL的SSL问题,如果不想有这个警告出现,只需要在hive-site.xml中的jdbc链接后面加上useSSL=false即可,如果还有其他配置,则需要用&隔开,因为&在xml中是非法字符,需要转换为实体语句,如下:
然后我们输入命令show tables如果没有报错,则安装成功
自此,我们的Hive环境已经成功搭建好了~,接下来会再熟悉一下Hive的用法已经HQL的使用