Hive部署(详细版)

前言

Hello,我又来更新啦,这次的文章针对于Hive部署展开,分为内嵌模式、本地模式、远程模式三块给大家一步步拆解如何去部署,每一步都有详细的文字介绍以及图片展示,清晰易懂,同时我也将自己部署过程中遇到的问题以及解决方法放在了里面,标注了下来,大家可以按需自取,如果你也遇到了部署的问题或者感兴趣这篇文章的话,那就跟随我的脚步往下看吧~

同时如果这篇文章对你有所帮助,或者你也喜欢的话,可以动动你发财的小手给作者点点赞+收藏吗❤️你的一个赞就是我持续学习更新的动力~

目录

一.内嵌模式(以Hadoop3为例)

1.1下载Hive安装包

1.2上传Hive安装包

1.3安装Hive

1.4同步jar包

1.5配置Hive系统环境变量

1.6初始化Derby数据库

1.7连接Hive

1.8测试Hive

二.本地模式(以Hadoop3为例)

2.1安装MySQL

2.2启动MySQL服务

2.3查看MySQL初始密码

2.4登录MySQL

2.5修改密码

2.6安装Hive

2.7修改Hive配置文件

2.8上传MySQL驱动包

2.9初始化MySQL

2.10连接Hive

三.远程模式

3.1启动MetaStore 服务

3.2启动HiveServer2服务

3.3安装Hive

3.4同步jar包

3.5修改Hive配置文件

3.6配置Hive系统环境变量

3.7连接 MetaStore 服务

3.8连接HiveServer2服务

四.总结

一.内嵌模式(以Hadoop3为例)

1.1下载Hive安装包

大家可以通过Hive官网下载,我这里下载的安装包版本是apache_hive-3.1.3-bin.tar.gz。

1.2上传Hive安装包

在虚拟机的/export/software命令下执行

rz

命令上传Hive安装包,如下图所示。

Hive部署(详细版)

注意:如果这里没办法使用rz命令,需要先执行yum install -y lrzsz命令后再输入即可。由于上篇部署Hadoop的时候说过,这里就不过多赘述了,有感兴趣的朋友可以去看一下我的上一篇基于完全分布式模式部署Hadoop的内容,很详细阐述了具体的一些操作。

1.3安装Hive

以解压缩的方式安装Hive,将Hive安装到目录/export/servers,具体命令如下:

tar -zxvf /export/software/apache-hive-3.1.3-bin.tar.gz -C /export/servers/

Hive部署(详细版)

上述命令执行之后,会在目录/export/servers/下生成apache_hive-3.1.3-bin目录,如上图所示。

该目录为Hive的安装目录,为了后续便于操作Hive,这里将Hive的安装目录重命名为hive-3.1.3,在虚拟机的/export/servers/目录执行如下命令:

mv apache-hive-3.1.3-bin/ hive-3.1.3

Hive部署(详细版)

1.4同步jar包

Hadoop和 Hive的运行都依赖jar包guava.jar,不过Hadoop和Hive默认使用该jar包的版本不一致,在启动Hive时会出现jar包冲突的问题,因此需要将Hive中的guava-19.0.jar替换为Hadoop中的guava-27.0-jre.jar。

首先,进入Hadoop存放jar包的目录,具体命令如下:

cd /export/servers/hadoop-3.3.5/share/hadoop/common/lib/

Hive部署(详细版)

然后,将guava-27.0-jre.jar复制到Hive安装目录下的lib目录,具体命令如下:

cp guava-27.0-jre.jar /export/servers/hive-3.1.3/lib/

最后,删除Hive安装目录中lib目录下的guava-19.0.jar,具体命令如下:

rm -fr /export/servers/hive-3.1.3/lib/guava-19.0.jar

Hive部署(详细版)

Hive部署(详细版)

1.5配置Hive系统环境变量

为了后续便于操作Hive,这里配置Hive系统环境变量。在虚拟机中执行“vi/etc/profile”命令,配置系统环境变量文件profile,在该文件的底部添加如下内容:

export HIVE_HOME=/export/servers/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin

Hive部署(详细版)

成功配置Hive系统环境变量后,保存并退出系统环境变量文件profile。

为了让系统环境变量文件中添加的内容生效,执行

source /etc/profile

命令初始化系统环境变量,使添加的Hive系统环境变量生效。

Hive部署(详细版)

1.6初始化Derby数据库

在操作以嵌入模式部署的Hive之前,需要执行初始化Derby数据库的操作,具体命令如下(注意在目录/export/servers下执行):

bin/schematool -initSchema -dbType derby

上述命令执行完成后的效果如图所示。

Hive部署(详细版)

在图中,初始化Derby数据库的信息中出现“schemaTool completed”的提示信息,说明成功初始化Derby数据库。

注意:在这里有可能你会报错如下图

Hive部署(详细版)

不用担心,可以直接用它的绝对路径执行初始化命令即可,具体命令如下:

/export/servers/hive-3.1.3/bin/schematool -initSchema -dbType derby

1.7连接Hive

在虚拟机中执行

hive

命令,通过Hive自带的命令行工具CLI连接Hive,如图所示.

Hive部署(详细版)

在图中命令行开头出现了hive>,说明成功连接Hive,并且进入CLT的命令行界面,此时便可以执行HiveQL语句以执行Hive。

1.8测试Hive

通过以下简单的HiveQL语句操作Hive,验证以嵌入模式部署的Hive是否可以正常使用。在CLT命令界面执行命令:

show databases;

查看数据库列表,如图所示。

Hive部署(详细版)

从图中可以看到,Hive在默认情况下仅仅包含一个数据库default,由此说明以嵌入模式部署的Hive可以正常使用。

若想退出CLT命令行界面,执行

quit;

命令即可。

Hive部署(详细版)

以上就是内嵌模式部署Hive的过程。

二.本地模式(以Hadoop3为例)

2.1安装MySQL

使用MySQL替换默认的Derby数据库存储元数据,具体操作步骤如下。

1.安装wget工具,该工具用于下载MySQL的源文件,具体命令如下:

yum -y install wget

Hive部署(详细版)

2.通过wget工具下载MySQL源文件,这里下载的是MySQL8.0版本的MySQL源文件,具体命令如下(注意是在/export/software目录下执行):

​wget http://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

上述命令执行完毕之后,会自动下载MySQL源文件,如下图所示。

Hive部署(详细版)

在图中发现出现 已保存 “mysql80-community-release-el9-1.noarch.rpm”的提示信息,说明MySQL源文件下载成功,此时MySQL源文件会下载到当前目录。

3.安装MySQL源。

在MySQL源文件所在目录下执行下面命令:

yum -y install mysql80-community-release-el9-1.noarch.rpm

执行完成后如下图所示。

Hive部署(详细版)

在图中发现,出现 “已安装:mysql80-community-release-el9-1.noarch”的提示信息,说明MySQL源文件安装成功。

4.通过yum工具安装MySQL。

具体命令如下:

yum install mysql-community-server -y

执行完成后如下图所示。

Hive部署(详细版)

出现图中的提示信息,说明MySQL安装成功。

注意:在这步如果出现了如下图错误

Hive部署(详细版)

这个错误是因为当前使用的 MySQL GPG 密钥版本不匹配,需要导入最新的 2023 版密钥来解决,解决方法如下:

先导入最新的 MySQL GPG 密钥,命令如下:

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

然后清理 yum 缓存并重新安装,命令如下:

yum clean all
yum install mysql-community-server -y

即可成功解决。

2.2启动MySQL服务

在虚拟机执行以下命令:

systemctl start mysqld

执行完成后,在执行systemctl status mysqld 命令查看MySQL运行状态,如下图所示。

Hive部署(详细版)

出现active的提示信息,说明MySQL服务正在运行。

为了便于在每次重新启动虚拟机时无需单独启动MySQL服务,可以执行

systemctl enable mysqld

命令,设置MySQL服务开机自动启动。

Hive部署(详细版)

2.3查看MySQL初始密码

MySQL安装完成后,默认root用户提供初始密码,查看该初始密码的命令如下:

grep 'temporary password' /var/log/mysqld.log

Hive部署(详细版)

需要注意的是,每次安装MySQL时,为root用户提供的初始密码都会不一样。

2.4登录MySQL

通过root用户,以及MySQL为root用户提供的初始密码登录MySQL,具体命令如下(替换为自己的密码):

mysql -uroot -pfx7Q1QsZoq;?

Hive部署(详细版)

注意:如果出现下图问题

Hive部署(详细版)

这个问题是因为密码里包含特殊字符(?)被 Shell 解析了,同时 MySQL 默认要求修改临时密码才能正常使用。按以下步骤解决:

用单引号包裹密码(避免 Shell 解析特殊字符),重新登录:

mysql -uroot -p'fx7Q10sZog;?'

即可正常登录。

2.5修改密码

MySQL默认为root提供的密码较为复杂且不变使用,这里将MySQL默认为root用户提供的密码修改为Itcast@2023,具体命令如下:

alter user 'root'@'localhost' identified by 'Itcast@2023';

Hive部署(详细版)

执行完成后,需要刷新MySQL配置,使得修改的密码操作生效,具体命令如下:

FLUSH PRIVILEGES;

Hive部署(详细版)

若想退出MySQL登录,执行

 quit; 

命令即可。

Hive部署(详细版)

2.6安装Hive

由于前面内嵌模式已经安过了,这里为了避免重复安装,直接在其基础上进行完成本地模式部署Hive的相关操作。

2.7修改Hive配置文件

进入Hive安装目录的conf目录,在该目录下执行

vi hive-site.xml

命令,创建Hive配置文件hive-site.xml,在该文件下添加以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>Itcast@2023</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive_local/warehouse</value>
    </property>
</configuration>

Hive部署(详细版)

添加完成后,保存并退出hive-site.xml文件。

2.8上传MySQL驱动包

在虚拟机的/export/servers/hive-3.1.3/lib目录下执行

rz

命令,上传已经下载好的MySQL驱动包,这里我下载的是mysql-connector-java-8.0.30.jar。

Hive部署(详细版)

2.9初始化MySQL

在操作本地模式部署的Hive之前,需要执行初始化MySQL的操作,具体命令如下:

schematool -initSchema -dbType mysql

执行完成如下图所示。

Hive部署(详细版)

出现 schemaTool completed 的提示信息,说明初始化成功。

2.10连接Hive

在虚拟机中执行

hive

命令,如下图所示。

Hive部署(详细版)

在图中命令行开头出现了hive>,说明成功连接Hive,并且进入CLT的命令行界面,此时便可以执行HiveQL语句以执行Hive。

以上就是本地模式部署Hive的过程。

三.远程模式

远程模式与本地模式一样,都是使用关系数据库替代Derby数据库存储元数据,不过,远程模式部署的Hive可以摆脱本地模式部署Hive的局限性,也就是说,用户可以在任意服务器上远程连接Hive并进行操作。

Hive提供了两种服务供用户实现远程连接,分别是MetaStore服务和HiveServer2服务,其中,MetaStore服务是Hive用来管理元数据的服务,它可以与关系数据库建立连接以获取元数据;HiveServer2服务基于Thrift实现,提供了使用JDBC和ODBC连接Hive的功能,它可以与MetaStore服务建立连接以获取元数据,也就是说,用户通过HiveServer2服务远程连接Hive时,需要提前启动MetaStore服务。

实现远程模式部署Hive需要两台服务器,其中一台作为服务器端,启动 MetaStore服务和HiveServer2服务,另一台作为客户端,通过连接MetaStore服务或HiveServer2服务操作Hive。这里使用本地模式部署的Hive作为服务端,启动MetaStore 服务和HiveServer2 服务,在虚拟机Hadoop2中单独安装一个Hive作为客户端,具体操作步骤如下。

3.1启动MetaStore 服务

在虚拟机 Hadoop3中启动MetaStore服务,具体命令如下(注意在/export/servers/hive-3.1.3/conf目录下执行):

hive --service metastore

上述命令执行完成后的效果如图所示。

Hive部署(详细版)

在图中,启动MetaStore服务的提示信息中出现“Starting Hive Metastore Server”的内容,说明正在启动MetaStore服务。

需要注意的是,启动MetaStore服务的窗口会被占用,无法进行其他操作,如果关闭该窗口,那么MetaStore服务便会停止运行。若想要手动停止MetaStore服务,则可以按组合键Ctrl+C。

3.2启动HiveServer2服务

在虚拟机Hadoop3中开启一个新的窗口以启动HiveServer2服务,具体命令如下:

hive --service hiveserver2

执行完成如下图所示。

Hive部署(详细版)

在图中,启动HiveServer2服务的提示信息中出现“Starting HiveServer2”的内容,说明正在启动HiveServer2服务。

需要注意的是,启动HiveServer2 服务的窗口同样会被占用,无法进行其他操作,如果关闭该窗口,那么HiveServer2服务便会停止运行。若想要手动停止 HiveServer2服务,则可以按组合键Ctrl+C。

3.3安装Hive

在虚拟机 Hadoop2的/export/software目录下执行

rz

命令,上传Hive安装包。

Hive部署(详细版)

Hive安装包上传完成后,以解压缩的方式将Hive安装到目录/export/servers,具体命令如下:

tar -zxvf /export/software/apache-hive-3.1.3-bin.tar.gz -C /export/servers/

上述命令执行完成后,会在/export/servers/目录下生成apache-hive-3.1.3-bin目录,该目录为Hive安装目录,为了后续便于操作Hive,这里将Hive安装目录重命名为hive-3.1.3,在虚拟机的/export/servers/目录执行如下命令:

mv apache-hive-3.1.3-bin/ hive-3.1.3

Hive部署(详细版)

3.4同步jar包

首先,进入虚拟机 Hadoop2中 Hadoop存放jar包的目录,具体命令如下:

cd /export/servers/hadoop-3.3.5/share/hadoop/common/lib/

然后,将guava-27.0-jre.jar复制到Hive安装目录下的lib目录,具体命令如下:

cp guava-27.0-jre.jar /export/servers/hive-3.1.3/lib/

最后,删除 Hive安装目录中lib目录下的guava-19.0.jar,具体命令如下:

rm -fr /export/servers/hive-3.1.3/lib/guava-19.0.jar

Hive部署(详细版)

Hive部署(详细版)

3.5修改Hive配置文件

进入Hive安装目录的conf目录,在该目录下执行

vi hive-site.xml

命令,创建Hive配置文件hive-site.xml,在该文件下添加以下内容:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop3:9083</value>
    </property>
</configuration>

Hive部署(详细版)

上述内容添加完成后,保存并退出hive-site.xml文件。上述内容中,参数hive.metastore.uris用于指定MetaStore服务的地址,其中,hadoop3表示启动MetaStore服务的服务器主机名,9083是MetaStore服务使用的端口。

3.6配置Hive系统环境变量

为了后续便于操作Hive,这里配置Hive系统环境变量。在虚拟机Hadoop2中执行

vi /etc/profile

命令,配置系统环境变量文件profile,在该文件的底部添加如下内容:

export HIVE_HOME=/export/servers/hive-3.1.3
export PATH=$PATH:$HIVE_HOME/bin

Hive部署(详细版)

成功配置Hive系统环境变量后,保存并退出系统环境变量文件profile。

为了让系统环境变量文件中添加的内容生效,执行

source /etc/profile

命令初始化系统环境变量,使添加的Hive系统环境变量生效。

3.7连接 MetaStore 服务

在虚拟机 Hadoop2中执行

hive

命令,通过Hive自带的命令行工具CLI连接 MetaStore服务,如图所示。

Hive部署(详细版)

在图中命令行开头出现了hive>,说明成功连接Hive,并且进入CLT的命令行界面,此时便可以执行HiveQL语句以执行Hive。

3.8连接HiveServer2服务

连接HiveServer2服务是通过Hive提供的客户端工具Beeline实现的。Beeline是Hive0.11版本引入的Hive客户端工具,它通过JDBC的方式连接HiveServer2服务。确保Hadoop集群处于启动的状态下,在虚拟机Hadoop2中执行如下命令连接HiveServer2服务。

beeline -u jdbc:hive2://hadoop3:10000 -n root

上述命令中,参数-u用于指定HiveServer2服务的地址,其中,hadoop3表示启动HiveServer2服务的服务器主机名;10000是HiveServer2服务默认使用的端口;参数-n用于指定连接HiveServer2服务时加载的用户名,该用户名必须具有操作HDFS的权限。

上述命令执行完成后的效果如图所示。

Hive部署(详细版)

在图中出现“Connecting to….”的提示信息,说明正在连接HiveServer2服务,当命令行的开头出现“0:jdbc:hive2://hadoop3:10000>”的内容时,说明成功连接HiveServer2服务,并且进入Beeline的命令行界面,此时便可以执行HiveQL语句操作Hive。

若想退出Beeline命令行界面,执行

!quit

命令即可。

以上就是远程模式部署Hive的过程。

四.总结

在部署Hive的过程中,我也将自己遇到的一些问题和解决方法罗列了出来,大家如果也有遇到的问题,可以留言评论,我们互相学习~

以上就是个人对于部署Hive的每一步操作,希望可以帮助看到这篇文章的你,如有不足,希望大家多多包涵,有错的地方也欢迎大家指出,多多指教,我们互相学习,仅以此篇,与君共勉。

我是正在持续学习进步中的小丁同学哇~希望大家可以给我个点赞+收藏。

© 版权声明

相关文章