• 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

  • 相关阅读:
    redis主从之过期key判断
    PHP之回调、匿名函数
    调试printf,fprintf (转)
    第一天,来报道
    hdu 4464 browsing history
    腾讯编程马拉松2012第一题
    今天面试悲剧了,看来面试前看考题是很关键的.
    JQuery访问WebService(可访问Java[Xfire])
    自己留备份,不解释.
    MYSQL UNION AND UNION ALL 的区别!
  • 原文地址:https://www.cnblogs.com/hemomo/p/16244414.html
Copyright © 2020-2023  润新知