当前位置:首页 » 《随便一记》 » 正文

三十六、centos安装hive3.1.2(精讲篇)_托马斯-酷涛的博客

12 人参与  2022年02月19日 08:53  分类 : 《随便一记》  评论

点击全文阅读


环境准备:

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中<name>对应的<value>值替换为自己的真实数据值,其余标签无需修改

<configuration>    
    <!-- jdbc 连接的 URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</value>
    </property>

     <!-- jdbc 连接的 Driver-->
        <!--新版本8.0版本的驱动为com.mysql.cj.jdbc.Driver-->
        <!--旧版本5.x版本的驱动为com.mysql.jdbc.Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <!-- jdbc 连接的 username(MySQL用户名)-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc 连接的 password(MySQL密码) -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>dang</value>
    </property>

     <!-- Hive 元数据存储版本的验证(Hive元数据默认是存储在Derby中,正常开启时它会去校验Derby,现在要使用MySQL存储元数据,
     就需要把这个关闭即可,如果开启,MySQL和Derby会导致Hive启动不起来的) -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>

   <!-- Hive  默认在 HDFS 的工作目录(可以不配置,因为默认就是/user/hive/warehouse,如果不使用默认的位置,可以进行手动修改) -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
</configuration>

                (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.<init>()V from class org.apache.hadoop.mapred.FileInputFormat
Exception in thread "main" java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.<init>()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&amp;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&#8

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';

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


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


点击全文阅读


本文链接:http://zhangshiyu.com/post/34967.html

配置  解决  文件  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1