三十六、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.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';


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



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
1807 69
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
4741 3
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
1113 78
|
Linux 网络安全 Apache
针对在Centos/Linux安装Apache过程中出现的常见问题集锦
以上每个问题的解决方案应深入分析错误日志、系统消息和各种配置文件,以找到根本原因并加以解决。务必保持系统和Apache软件包更新到最新版本,以修复已知的bugs和安全漏洞。安装和管理Web服务器是一项需要细致关注和不断学习的任务。随着技术的发展,推荐定期查看官方文档和社区论坛,以保持知识的更新。
492 80
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
2720 16
|
存储 关系型数据库 MySQL
在CentOS 8.x上安装Percona Xtrabackup工具备份MySQL数据步骤。
以上就是在CentOS8.x上通过Perconaxtabbackup工具对Mysql进行高效率、高可靠性、无锁定影响地实现在线快速全量及增加式数据库资料保存与恢复流程。通过以上流程可以有效地将Mysql相关资料按需求完成定期或不定期地保存与灾难恢复需求。
903 10
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
860 18
|
人工智能 数据挖掘 Linux
Centos安装Python3.7(亲测可用)
本指南详细介绍了在基于Linux(以CentOS系统为例,使用yum包管理器)的系统上安装Python 3.7版本的完整流程。Python是一种广泛使用的高级编程语言,在各种领域如软件开发、数据分析、人工智能和区块链开发等都有着重要的应用。
984 2
|
安全 Linux
安装EPEL Repository Centos 7.9
记住,行走在Linux的世界,把“学习”作为你不可或缺的随身宝典。今天你学会了如何将EPEL这座外来的宝库接入你的系统,明天,你或许就能在这座宝库中发现一款能领你走向Linux大师之路的神器。
867 5
|
运维 网络协议 Linux
CentOS下Bind服务的安装与故障排查
通过以上的步骤,您应该能够在CentOS系统上安装并配置BIND DNS服务,并进行基本的故障排查。
909 0