安装hive3
- 一.下载&解压
下载地址,下载安装文件之后解押到自己机器上合适的目录即可。
https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
- 二. 配置hive
1:配置环境变量
配置HIVE_HOME环境变量,然后将HIVE_HOME下的bin目录加入到PATH路径中
export HIVE_HOME=/data/java/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin
cp hive-env.sh.template hive-env.sh
HADOOP_HOME=/data/java/hadoop-3.2.2
然后找到HADOOP_HOME变量,将其修改为自己的HADOOP安装目录。
2:配置日志
只需要将conf目录中的日志配置模板复制一份修改名称为 hive-log4j2.properties 即可
cp hive-log4j2.properties.template hive-log4j2.properties
3:配置元数据存储和配置文件修改
创建hive-site.xml文件,增加mysql的连接地址和用户名密码,然后把mysql的驱动下载到 HIVE_HOME/lib目录下
下载deb
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java_8.0.26-1ubuntu20.04_all.deb
dpkg -X mysql-connector-java_8.0.26-1ubuntu20.04_all.deb ./
./usr/share/java 里面区获取jar包,我的是/data/java/mysql/usr/share/java获取的
cp /data/java/mysql/usr/share/java/mysql-connector-java-8.0.26.jar /data/java/apache-hive-3.1.2-bin/lib
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--JDBC元数据仓库连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore_db?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--JDBC元数据仓库驱动类名-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--元数据仓库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<!--元数据仓库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>xxxx</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://127.0.0.1:9820/user/hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://127.0.0.1:9820/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://127.0.0.1:9820/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name> //注意这里是false, 不是本地模式
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value></value>
</property>
</configuration>
4. 在hadoop中创建数据仓库目录
hadoop fs -mkdir -p /user/hive/warehouse
hadoop fs -chmod g+w /user/hive/warehouse
5. 执行数据库初始化命令始化数据库
schematool -dbType mysql -initSchema
改名了执行成功之后,数据库中就会出现一堆表,用于存储元数据的。
5.1 发现报错了
Exception in thread “main” java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
关键在: com.google.common.base.Preconditions.checkArgument 这是因为hive内依赖的guava.jar和hadoop内的版本不一致造成的。 检验方法:
- 查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本
- 查看hive安装目录下lib内guava.jar的版本 如果两者不一致,删除版本低的,并拷贝高版本的 问题解决!
rm /data/java/apache-hive-3.1.2-bin/lib/guava-19.0.jar
cp /data/java/hadoop-3.2.2/share/hadoop/common/lib/guava-27.0-jre.jar /data/java/apache-hive-3.1.2-bin/lib/
5.2 又报错了
Error: Syntax error: Encountered “” at line 1, column 64. (state=42X01,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2
Use --verbose for detailed stacktrace.
*** schemaTool failed ***
文件名应该是hive-site.xml 而不是 hive_site.xml
- 验证hive安装 结果
hive> show databases;
OK
default
Time taken: 0.657 seconds, Fetched: 1 row(s)
hive>
启动hive,执行show databases;
命令出现数据,安装成功
hive 设置log路径
1、进入到hive的conf目录下
2、hive-log4j2.properties.template 文件修改 hive-log4j2.properties
3、vim 打开文件
4、property.hive.log.dir =/data/java/apache-hive-3.1.2-bin/logs(日志文件路径)