栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

三十六、centos安装hive3.1.2(精讲篇)

三十六、centos安装hive3.1.2(精讲篇)

环境准备:

centos 7

centos可以上网

Hadoop正常运行          详情见:Hadoop完全分布式

MySQL正常运行           详情见:Centos安装MySQL

前言:下文操作均以图文形式展现,对照自己的路径进行配置 案例目标:

  1. 安装Hive  3.1.2版
  2. 搭建Hive环境
  3. 配置MySQL jar包驱动  5.1.37版
  4. 关联MySQL 和 Hive

案例实施: 一、下载

        由于使用wget命令下载直接会下载到此目录,且我的安装全部都在 /opt/software目录下,所以先进入下载目录再进行下载,省麻烦移动。

        1、下载Hive 3.1.2包:

wget https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

        2、下载MySQ 5.1.37驱动包(虚拟机地址栏):

https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.37

二、安装

         1、解压:

        2、重命名:

     

        3、移动MySQL驱动包到  /...../hive/lib目录下:

三、环境配置

        1、环境变量:

vim /etc/profile

 

        2、 使环境变量立即生效:

source /etc/profile

        3、配置  hive-env.sh

                (1)拷贝hive-env.sh.template并命名为hive-env.sh:

cp hive-env.sh.template hive-env.sh

                (2)修改hive-env.sh 文件

        原文件:

        现文件:

        注:第一个为Hadoop目录,第二个为Hive配置目录,最后一个为驱动jar包路径

        4、配置hive-site.xml 

                (1)新建hive-site.xml:

            直接将此文件内容拷入hive-site.xml  ,将如下hive-site.xml中对应的值替换为自己的真实数据值,其余标签无需修改

    
    
    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8
    

     
        
        
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
    

    
    
        javax.jdo.option.ConnectionUserName
        root
    

    
    
        javax.jdo.option.ConnectionPassword
        dang
    

     
    
        hive.metastore.schema.verification
        false
    

   
    
        hive.metastore.warehouse.dir
        /user/hive/warehouse
    

                (2)创建HDFS文件夹(必须要创建,hive-site.xml文件中有此路径,此路径很重要):

                        A、启动Hadoop各节点:

                         B、离开安全模式,创建两个文件夹并赋予权限:

                (3)创建temp文件夹并赋予权限,路径为  /....../hive/temp:

        5、配置log日志文件

        (1)拷贝并重命名hive-log4j2.properties.template为 hive-log4j2.properties文件:

 cp hive-log4j2.properties.template hive-log4j2.properties

        (2)修改日志文件:

vim hive-log4j2.properties

         修改内容  property.hive.log.dir =/....../hive/temp/root        上面创建的目录/temp加一个root就可以了

        6、MySQL进行远程连接:

                (1)登录MySQL

                (2)使用mysql数据库

                (3)执行:  update user set host = '%' where user='root';

                (4)退出MySQL 

          (5)重启MySQL服务:

                        systemctl stop mysqld.service

                        systemctl start mysqld.service

         

四、初始化元数据库

        Hive中的元数据,其默认存储在 Derby 中,由于MySQL性能有明显优势,此处以MySQL作为元数据库;

               进入 /....../hive/bin 目录进行mysql初始化操作:

schematool -dbType mysql -initSchema

 

         如图所示即为初始化成功

五、检查

        进入/....../hive/bin目录直接输入hive:

     

          显示数据库:

 

        创建表,插入数据:

centos安装Hive3.1.2完成
六、问题

        1、第一次进入hive发现:

        解决: NameNode在启动的时候首先进入安全模式,如果datanode丢失的block达到一定的比例,则系统会一直处于安全模式状态即只读状态,直接关闭安全模式即可:  hdfs dfsadmin -safemode leave


        2、执行查看表命令报错:

Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V from class org.apache.hadoop.mapred.FileInputFormat
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V from class org.apache.hadoop.mapred.FileInputFormat
 

               

        解决:进入/...../hive/lib 目录下将  guava-19.0.jar  换为   gua-13.0.jar 

                   

链接:https://mvnrepository.com/artifact/com.google.guava/guava/13.0

         


        3、初始化报错:Failed to load driverFailed to load driver:

metastore connection URL:     jdbc:mysql://cit-server2-s2-120:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8
metastore Connection Driver :     com.mysql.jc.jdbc.Driver
metastore connection User:     root
org.apache.hadoop.hive.metastore.HivemetaException: Failed to load driver
Underlying cause: java.lang.ClassNotFoundException : com.mysql.jc.jdbc.Driver
 

        解决:驱动jar包版本不对应,没放在正确的位置(/....../hive/lib下);


        4、Hadoop未启动导致hive链接失败:

Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Call From master.hadoop/192.168.140.138 to master.hadoop:9000 failed on connection exception: java.net.Connect

        解决:启动Hadoop集群


        5、multiple SLF4J bindings

       SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/apache-hive-3.1.1-bin/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/hadoop-3.2.0/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
 

       解决:  Hive和Hadoop的slf4j-log4j包冲突,删除/....../hive/lib 下的slf4j-log4j包(Hive的包)


        6、expansion character

Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
 at [row,col,system-id]: [3210,96,"file:/usr/local/hive/apache-hive-3.1.1-bin/conf/hive-site.xml"]

Caused by: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
 at [row,col,system-id]: [3210,96,"file:/usr/local/hive/apache-hive-3.1.1-bin/conf/hive-site.xml"]
at org.apache.hadoop.conf.Configuration$Parser.parseNext(Configuration.java:3277)
    at org.apache.hadoop.conf.Configuration$Parser.parse(Configuration.java:3071)
 

        解决:hive-site.xml文件第3210行有特殊字符,删除特殊字符 for

vim hive-site.xml +3210


        7、not allowed to connect to this MySQL server

          原因:服务器不允许远程连接

          解决:   进行本文第二大点第6小点操作


        8、Access denied for user ‘root’@‘DW1’

org.apache.hadoop.hive.metastore.HivemetaException: Failed to get schema version.
Underlying cause: java.sql.SQLException : Access denied for user 'root'@'DW1' (using password: YES)
SQL Error code: 1045
 

        原因:创建用户的时候为root登录localhost

        解决:进入MySQL端执行        alter user 'root'@'localhost' identified by '123456';

        注意: 修改主机名及其密码


 不能打败你的,必将使你愈发强大。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/282912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号