• mac安装hive 2.3.9


    前言:

    看看需要那些东西
    在这里插入图片描述
    hive是基于Hadoop的一个数据仓库工具,所以要安装并使用hive,需要现在装Hadoop,具体的安装方式可以参考之前写的博客《mac安装Hadoop》

    1.下载

    我选择手动安装,由于我的hadoop安装的是3.2.4,最新的4.0.0这个alpha版(内部测试版),所以我选择下载3.1.3 hive

    在这里插入图片描述

    下载hive3.1.3,选这个如下图:

    在这里插入图片描述

    2.解压

    $ tar -zxvf apache-hive-3.1.2-bin.tar.gz 
    
    • 1

    1.配置环境变量

    编辑用户环境变量 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
    
    • 1
    • 2
    • 3

    刷新 source ~/.bash_profile

    2.执行hive --version查看版本

    结果输出了一坨,发现hive的log4j-slf4j-impl-2.17.1.jar和hadoop的slf4j-reload4j-1.7.35.jar,这两个jar包因为都有/org/slf4j/impl/StaticLoggerBinder.class这个类,所有冲突了
    在这里插入图片描述

    解决方案:

    1.hive降到2.3.9

    这种情况大多数因为版本不兼容,所以我打算把hive降级,重复上述安装配置操作,
    3.1.2不行,估计是大版本跨越,直接降到2.3.9然后果然好了。。。
    在这里插入图片描述

    2.直接删除hive里面的这个冲突的jar包,也可以

    $ rm -rf log4j-slf4j-impl-2.17.1.jar
    
    • 1

    在这里插入图片描述

    3.本地配置Hive Metastore

    3.1 Hive 配置元数据库metastore有3种分别为内嵌配置、本地配置和远程配置,简单说一下:
    (1)内嵌配置:

    Hive的元数据默认保存在了内嵌的derby数据库( Hive 自带的数据库)里,默认即为内嵌模式

    (2)本地配置:

    本地安装 MySQL替代 derby 存储元数据, 不再使用内嵌的 derby 作为元数据的存储,而是使用其他数据库比如 MySQL 来存储元数据
    Hive 服务和 metastore 服务运行在同一个进程中, MySQL 是单独的进程, 可以同一台机器, 也可以在远程机器上

    (3)远程配置:

    Hive 服务和 metastore 在不同的进程内, 可能是不同的机器, 该模式需要将 hive.metastore.uris设置为 metastore 服务器URL

    3.2下面来讲本地模式配置:

    本地安装 MySQL(我的是5.7.23 MySQL),并启动 MySQL 服务
    创建数据库hive

    create database hive;
    
    • 1

    需要将 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
    
    • 1

    注意:MySQL数据库的版本不能大于MySQL驱动包的版本

    配置hive
    进入到hive的conf目录下,创建vim hive-site.xml

     $ cd $HIVE_HOME
     $ cd conf/
     $ vim hive-site.xml
    
    • 1
    • 2
    • 3

    然后把下面配置复制到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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    4.运行Hive

    运行Hive之前,要确保MySQL和Hadoop两个服务都已经启动了

    初始化hive(从 Hive 2.1 版本开始, 在第一次运行hive之前,需要先运行schematool命令来执行初始化操作。)

    schematool -dbType mysql -initSchema
    
    • 1

    初始化之后然后运行

    hive
    
    • 1

    如图运行成功:
    在这里插入图片描述

    我遇到的运行报错解决方法:
    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包的位置,分别位于

  • 相关阅读:
    tomcat 的缓存机制
    基于Redis的分布式锁 以及 超详细的改进思路
    Java基础:Stream流和方法引用
    手把手教你做测开:开发Web平台之图书修改
    丑单2023秋招笔试第一题 子串之和(C++ 回溯)
    动态分区分配算法
    nginx高可用配置(五)
    编写根据现有代码生成流程图的IDEA插件的代码。
    MySQL数据库——权限控制及日志管理
    网络神经算法程序是什么,网络神经算法程序设计
  • 原文地址:https://blog.csdn.net/sugar_cookie/article/details/126278269