安装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内的版本不一致造成的。 检验方法:

  1. 查看hadoop安装目录下share/hadoop/common/lib内guava.jar版本
  2. 查看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

  1. 验证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(日志文件路径)