1.准备环境

 1. jdk1.8(最好还是使用1.8版本的jdk)
 2. mysql5.6或者5.7也可以
 3. hadoop3.X版本

至于linux配置mysql,可以参考我的这篇博客。
Linux Centos7配置mysql

2.开始配置

  1. 下载apache-hive
    可以通过wget方式下载,为了方便傻瓜式配置文件路径尽量和我保持一直吧。
[root@hadoop1 ~]#  mkdir /opt/hadoop

```swift
[root@hadoop1 ~]#  cd /opt/hadoop
```
```swift
[root@hadoop1 hadoop]#  wget -i -c https://ljy0427.online/install/apache-hive-3.1.2-bin.tar.gz
```

如果提示wget报错的话,那就试试这个命令
```swift
[root@hadoop1 ~]# yum install wget -y
```
通过这种方式下载可能有点慢,毕竟是自己的小型服务器。
  1. 解压并重命名

    [root@hadoop1 hadoop]# tar -zxvf apache-hive-3.1.2-bin.tar.gz
    [root@hadoop1 hadoop]# mv apache-hive-3.1.2-bin hive
  2. 配置环境变量

    [root@hadoop1 hadoop]# vim /etc/profile
     1. 将以下东西添加到该/etc/profile文件中
     2. export  HIVE_HOME=/opt/hadoop/hive
        export  PATH=$HIVE_HOME/bin:$PATH

之后使用下面这个命令重新刷新配置文件

[root@hadoop1 hadoop]# source /etc/profile

  1. 查看配置是否成功

    [root@hadoop1 hadoop]# hive -version

    看到报错了吧,是不是慌得一批,其实我告诉你,莫慌,很正常,看看报错是不是和我一样吧,如果不一样,那再慌也不迟。
    在这里插入图片描述
    出现这个问题是因为hadoop中没有guava-27.0-jre.jar这个包,或者是hive和hadoop中的这个包的版本不一样,解决办法来啦,好好看好好学。

    [root@hadoop1 hadoop]# cd /opt/hadoop/hive/lib

```swift
[root@hadoop1 lib]# wget -i -c https://ljy0427.online/install/guava-27.0-jre.jar
```
注意,下载了之后查看当前文件夹里面是否存在低版本的guava包,如果有,放心大胆的删了吧,不删会出问题哦。
```swift
[root@hadoop1 lib]# cp guava-27.0-jre.jar /opt/hadoop/hadoop-3.3.0/share/hadoop/common
```
现在再试试 上面那个 hive -version命令,是不是不一样了。
嗯,是不一样了,但又出新问题了,莫慌,看看和我一样不,如果一样的话,就是缺少mysql的jar包,给它导进去不就完了。
![在这里插入图片描述](http://img.ljy0427.online/img/2023-7-30/13:19:32-1690694371466.png)
再在这个目录下面执行以下操作


```swift
[root@hadoop1 lib]# wget -i -c https://ljy0427.online/install/mysql-connector-java-5.1.32.jar
```
现在再来执行hive -version操作,看看效果吧,这个运行有点慢,慢慢等,可以先斗上把地主。
看看是不是成了啊。
这个时候有的同学可能还是报错,就会慌了,然后就挠了挠头,奇了怪了。不要慌,看看报错和这个一样不吧。
![在这里插入图片描述](http://img.ljy0427.online/img/2023-7-30/13:17:41-1690694261514.png)
这个就是由于hadoop环境没有启动所导致的,看到这里,还不快去把配好的hadoop环境给启动了,还想再斗把地主再去??
**勾重点,重点来了,hive这个环境是要在hadoop的支持下才能运行,所以全程请保证hadoop环境正常哦。**

启动好hadoop环境之后再来试试这个hive -version这个命令吧。哇成功了,有点小激动。
在这里插入图片描述
来到这里说明成功一大半了,加油,这是退出hive。



```swift
hive> exit;
```
  1. 配置hive
    1.进入/conf文件夹
[root@hadoop1 lib]# cd ../conf
2.复制配置文件(这里就不做过多的解释,想了解为什么,就看看hive-env.sh.template这个文件中的说明吧)
```swift
[root@hadoop1 conf]# cp hive-env.sh.template hive-env.sh
```
3.修改hive-env.sh文件
```swift
[root@hadoop1 conf]# vim hive-env.sh
```
```swift
 HADOOP_HOME=/opt/hadoop/hadoop-3.3.0
 #注意这里的这个是你配置hadoop的地址
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210318204109168.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg1MTA1NQ==,size_16,color_FFFFFF,t_70#pic_right)

6.添加配置模板

[root@hadoop1 conf]# vim hive-site.xml
#这里这个文件是直接生成,原来没有,原理不要思考了,然后添加如下配置内容

下面这里面需要修改javax.jdo.option.ConnectionURL中的hadoop1,修改成你自己打hadoop中NameNode的结点的主机名。javax.jdo.option.ConnectionUserName中的值修改成数据库的用户名,javax.jdo.option.ConnectionPassword修改成数据库密码

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
    <name>javax.jdo.option.ConnectionURL</name>
     <value>jdbc:mysql://hadoop1: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>root</value>
</property>
</configuration>

好了,现在初始化hive吧,再启动之前,记得把mysql服务开启

[root@hadoop1 conf]# systemctl enable mysqld.service

然后再初始化吧

[root@hadoop1 conf]# schematool -initSchema -dbType mysql

初始化之后,可能会出现成功或失败,如果运行结果如下图弹出一个schematool completed,那么恭喜,已经成功配置好hive了,如果和这个不一样,那么就是说明失败了,那就接着往下看吧。

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210319153544481.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDg1MTA1NQ==,size_16,color_FFFFFF,t_70#pic_right)
使用下面这个命令看看报错的具体信息吧
[root@hadoop1 conf]# schematool -initSchema -dbType mysql -userName hive -passWord [PROTECTED] -verbose

在这里插入图片描述
如果和这个一样提示,那就说明mysql数据库的这个hive用户名的密码不对,这个时候,改一下hive,并且修改它的权限。

  1. 修改mysql中的用户权限
    1.进入mysql;

    [root@hadoop1 conf]# mysql -uroot -p

    2 查看数据库中的所有用户名

mysql> use mysql;
mysql> select host,user from user;
果然没有hive这个用户,那就创建一个吧,如果你的有的话,最好还是删除了,重新新建一个吧。至于怎么删除
```perl
mysql> delete host from user where user='hive';
```
使用这个命令创建一个吧


```perl
mysql> CREATE USER 'hive'@'root' IDENTIFIED BY 'root';
#这个时候可能会有个错误提示:
#ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
#这个提示我还可以教你解决,看好了,执行下面两个命令。
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=1;
```
然后再重新执行那个创建用户的命令吧。这就成功了吧,神奇吧,哈哈。
再给hive这个用户授权


```perl
mysql> grant all privileges on *.* to 'hive' @'hadoop1' identified by 'root' with grant option;
```
授权成功之后,应该会有一个警告,可以忽略,这个时候再刷新一下数据库


```perl
mysql> flush privileges;
```
然后退出mysql就可以了
```perl
mysql> exit;
```
这个时候重启一下mysql服务吧。

```swift
[root@hadoop1 conf]# systemctl restart mysqld.service
```

然后就再初始化hive吧,上面的那个问题也就差不多解决了。

[root@hadoop1 conf]# schematool -initSchema -dbType derby   
最后修改:2023 年 07 月 31 日