hive3.1.2版本的安装

Hive环境搭建

说明:

因为之前写的hive2.3.6版本是基于hadoop2.7的,但是hadoop更新到hadoop3.2版本之后,再使用原来的版本就存在一些问题。

于是怀疑是hive版本与hadoop版本不兼容造成的,于是下载了hive3.1.2,完整的走了一遍,具体步骤参照如下教程。

(原来的hive2.3.6版本的教程应该也是可以用的,问题的解决办法与本文hive3.1.2的解决版本类同。)

Hive下载地址

https://mirrors.tuna.tsinghua.edu.cn/apache/hive/ 

在master节点上安装Hive

解压缩、重命名

[root@master opt]# tar -zxvf  apache-hive-3.1.2-bin.tar.gz -C ./  #解压到当前目录

[root@master opt]# mv ./ apache-hive-3.1.2-bin ./hive  //重命名

添加环境变量

[root@master opt]# vi ~/.bashrc

export HIVE_HOME=/opt/hive

export PATH=$HIVE_HOME/bin:$HIVE_HOME/sbin:$PATH

1、新建新建hive-site.xml文件

 [root@master conf]# vi hive-site.xml   #添加如下代码,只需要修改标红部分

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

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

<configuration>

# 连接数据库hive,如果没有需要自己在mysql中创建

  <property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</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>

# 配置mysql的登录用户名

  <property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>root</value>

    <description>username to use against metastore database</description>

  </property>

# 配置mysql的登录密码

  <property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>bigData@123</value>

    <description>password to use against metastore database</description>

  </property>

</configuration>

2、复制mysql的驱动文件到hive的lib下

 [root@master conf]# cp /opt/mysql-connector-java-5.1.46.jar /opt/hive/lib/

3、初始化元数据信息

因为我之前安装了hive2.3.6版本,元数据信息存储在mysql中的,再安装另一个版本,就会报错。

第1次执行初始化元数据

 [root@master hive]# ./bin/schematool -dbType mysql -initSchema

报错1:

Exception in thread "main" java.lang.NoSuchMethodError:

com.google.common.base.Preconditions.checkArgument

原因:

这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的。

解决方法:

1.查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本

2.查看hive安装目录下lib内guava.jar的版本,如果两者不一致,拷贝高版本去替代较低版本!

  [root@master lib]# rm -f guava-19.0.jar

[root@master lib]# cp /opt/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /opt/hive/lib   #拷贝hadoop的该jar包到hive的lib下

第2次执行初始化

[root@master hive]# ./bin/schematool -dbType mysql -initSchema

报错2:

org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!

原因:

再mysql中,之前版本安装的时候,已经创建了hive数据库,并初始化的相应版本的元数据信息,因此在安装新版本的时候,再去初始化该数据库就会报错。

解决方法:

1.删除mysql中已存在的hive数据库

2.重新创建新的hive数据库

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| hive               |

| mysql              |

| performance_schema |

| sys                |

+--------------------+

5 rows in set (0.01 sec)

mysql> drop database hive;

Query OK, 43 rows affected (0.05 sec)

mysql> create database hive;

Query OK, 1 row affected (0.00 sec)

第三次执行初始化操作

[root@master hive]# ./bin/schematool -dbType mysql -initSchema

中间会输出一堆东西,但是没有任何报错信息,最后几行显示如下,说明初始化成功。

 

4、启动hive

[root@master conf]# start-all.sh  #启动Hadoop集群

[root@master hive]# hive  #启动hive,

会输出一堆信息,最后两行显示如下,说明成功了。

 

5、简单使用hive

hive> show databases;   #查看hive里面的数据库

OK

default

Time taken: 0.714 seconds, Fetched: 1 row(s)

hive>

到此,hive3.1.2就安装完成了。

                                                      -- GeiliHe 2022.5.7 晚23.00

posted @ 2022-05-07 22:47  geiliHe  阅读(956)  评论(0编辑  收藏  举报