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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 三十六、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.png


二、安装

        1、解压:


2.png


       2、重命名:


3.png


 

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


4.png


三、环境配置

       1、环境变量:


vim /etc/profile

5.png

       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 文件


       原文件:


6.png


       现文件:


7.png


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


       4、配置hive-site.xml


               (1)新建hive-site.xml:


8.png


           直接将此文件内容拷入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&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各节点:


9.png


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



10.png

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


11.png


       5、配置log日志文件


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


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

       (2)修改日志文件:


vim hive-log4j2.properties


12.png

        修改内容  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


13.png


14.png      




四、初始化元数据库

     

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


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


schematool -dbType mysql -initSchema

15.png


16.png

        如图所示即为初始化成功


五、检查

   

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


17.png


 

         显示数据库:

18.png


       创建表,插入数据:


19.png


centos安装Hive3.1.2完成


六、问题

   

1、第一次进入hive发现:


20.png


       解决: 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


21.png


   

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

22.png

                 


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


23.png


     


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


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



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
110 64
|
2月前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
119 61
|
19天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
|
28天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
29天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
98 1
Linux系统之Centos7安装cockpit图形管理界面
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
86 3
|
2月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
142 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
60 2
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
108 2