看看需要那些东西
hive是基于Hadoop的一个数据仓库工具,所以要安装并使用hive,需要现在装Hadoop,具体的安装方式可以参考之前写的博客《mac安装Hadoop》。
$ tar -zxvf apache-hive-3.1.2-bin.tar.gz
编辑用户环境变量 vim ~/.bash_profile
#Hive 3.1.3
export HIVE_HOME=/Users/chenl/Library/JavaSoft/Middleware/Hive/apache-hive-3.1.3-bin
export PATH=$HIVE_HOME/bin:$PATH
刷新 source ~/.bash_profile
结果输出了一坨,发现hive的log4j-slf4j-impl-2.17.1.jar和hadoop的slf4j-reload4j-1.7.35.jar,这两个jar包因为都有/org/slf4j/impl/StaticLoggerBinder.class这个类,所有冲突了
这种情况大多数因为版本不兼容,所以我打算把hive降级,重复上述安装配置操作,
3.1.2不行,估计是大版本跨越,直接降到2.3.9然后果然好了。。。
$ rm -rf log4j-slf4j-impl-2.17.1.jar
Hive的元数据默认保存在了内嵌的derby数据库( Hive 自带的数据库)里,默认即为内嵌模式
本地安装 MySQL替代 derby 存储元数据, 不再使用内嵌的 derby 作为元数据的存储,而是使用其他数据库比如 MySQL 来存储元数据
Hive 服务和 metastore 服务运行在同一个进程中, MySQL 是单独的进程, 可以同一台机器, 也可以在远程机器上
Hive 服务和 metastore 在不同的进程内, 可能是不同的机器, 该模式需要将 hive.metastore.uris
设置为 metastore 服务器URL
本地安装 MySQL(我的是5.7.23 MySQL),并启动 MySQL 服务
创建数据库hive
create database hive;
需要将 mysql-connector-java-x.x.x.jar (MySQL驱动包)拷贝到 $HIVE_HOME/lib目录下
获取方式:
(1)百度云
链接: mysql-connector-java-8.0.16.jar
密码: wajj
(2)也可以下载到lib目录下:
curl -O https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
注意:MySQL数据库的版本不能大于MySQL驱动包的版本
配置hive
进入到hive的conf目录下,创建vim hive-site.xml
$ cd $HIVE_HOME
$ cd conf/
$ vim hive-site.xml
然后把下面配置复制到vim hive-site.xml
<configuration>
<property>
<name>hive.metastore.localname>
<value>truevalue>
property>
<property>
<name>javax.jdo.option.ConnectionURLname>
<value>jdbc:mysql://localhost:3306/hivevalue>
property>
<property>
<name>javax.jdo.option.ConnectionDriverNamename>
<value>com.mysql.jdbc.Drivervalue>
property>
<property>
<name>javax.jdo.option.ConnectionUserNamename>
<value>rootvalue>
property>
<property>
<name>javax.jdo.option.ConnectionPasswordname>
<value>rootvalue>
property>
configuration>
运行Hive之前,要确保MySQL和Hadoop两个服务都已经启动了
初始化hive(从 Hive 2.1 版本开始, 在第一次运行hive之前,需要先运行schematool命令来执行初始化操作。)
schematool -dbType mysql -initSchema
初始化之后然后运行
hive
我遇到的运行报错解决方法:
hadoop和hive的两个guava.jar版本不一致
报错如下:
Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V at org.apache.hadoop.conf.Configuration.set(Configuration.java:1380) ... at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
解决方法:找到两个jar包的位置,分别位于