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