HIve安装配置
一、Hive的安装模式简介
Hive 的安装模式分为3种,分别是嵌入模式、本地模式和远程模式。下面针对这3种模式进行介绍。
(1)嵌入模式:使用内嵌的Derby数据库存储元数据,这种方式是Hive的默认安装方式,配置简单,但是一次只能连接一个客户端,适合用来测试,不适合生产环境。
(2)本地模式:采用外部数据库存储元数据,该模式不需要单独开启 Metastore服务,因为本地模式使用的是和 Hive在同一个进程中的Metastore服务。
(3)远程模式:与本地模式一样,远程模式也是采用外部数据库存储元数据。不同的是,远程模式需要单独开启 Metastore服务,然后每个客户端都在配置文件中配置连接该Metastore 服务。远程模式中,Metastore 服务和 Hive 运行在不同的进程中。
二、远程模式安装
本地和远程模式安装配置方式大致相同,本质上是将Hive默认的元数据存储介质由自带的Derby数据库替换为MySQL数据库。
MySQL前面已经安装过了。这里不在赘述。
1.下载安装包
下载地址:https://dlcdn.apache.org/hive/
2.上传
3. 解压
将hive安装包解压到/export/servers/目录下
tar zvxf apache-hive-3.1.2-bin.tar.gz -C /export/servers/
4.解决hadoop、hive之间guava版本差异
把hadoop安装包下的guava复制到删除的文件目录下
cp guava-27.0-jre.jar /export/servers/apache-hive-3.1.2-bin/lib/
5. 修改配置文件
1)进入配置文件
2)复制模板文件
3)修改hive-env.sh
4)添加 hive-site.xml 文件,配置MySQL的相关信息
由于 Hive 安装包 conf 目录下,没有提供 hive-site.xml 文件,这里需要创建并编辑一个 hive-site.xml 配置文件,具体内容如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- MySQL数据库地址 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value> jdbc:mysql://hadoop001:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
</property>
<!-- MySQL数据库驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- MySQL数据库账号 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>20bigdata</value>
</property>
<!-- MySQL数据库密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Bigdata2022!</value>
</property>
</configuration>
6. 上传MySQL驱动
由于使用的是MySQL数据库,那么就需要上传MySQL连接驱动的 jar 包到 Hive 安装包lib文件夹下。
7. 初始化metadata
bin/schematool -initSchema -dbType mysql -verbose
初始化成功会在mysql中自动创建hive数据库和74张表
8. 启动hive
三、Hive的管理
1. Hive的管理之CLI方式
Hive CLI是Hive的交互工具,下面演示几种 CLI 的使用。
1)启动Hive
#<HIVE_HOME>/bin/hive
2)退出Hive
hive> exit;
hive> quit;
3)查看数据库中的表
hive> show tables;
4)查看数据库的内置函数
hive> show functions;
5)清屏
hive> !clear;
2. Hive的管理之远程服务
由于使用CLI连接方式不能进行多个节点的同时访问,而且会造成服务器阻塞,且出于对服务器安全性的考虑, Hive服务所部署的服务器通常用户是无法直接访问的,因此,必须选用远程服务启动模式,具体启动步骤如下。
1)分发hive到hadoop002和hadoop003
首先,将hadoop001服务器安装的 Hive 程序分别复制到 hadoop002 和 hadoop003服务器上,具体命令如下:
scp -r /export/servers/apache-hive-3.1.2-bin/ hadoop002:/export/servers/
scp -r /export/servers/apache-hive-3.1.2-bin/ hadoop003:/export/servers/
2)配置hadoop中的core-site.xml文件,允许hive访问
<!-- 配置访问hadoop的权限,能够让hive访问到 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.users</name>
<value>*</value>
</property>
分发到hadoop002和hadoop003上
scp /export/servers/hadoop-3.1.4/etc/hadoop/core-site.xml hadoop002:/export/servers/hadoop-3.1.4/etc/hadoop/
scp /export/servers/hadoop-3.1.4/etc/hadoop/core-site.xml hadoop003:/export/servers/hadoop-3.1.4/etc/hadoop/
3)启动hadoop集群和MySQL数据库
4)启动 Hiveserver2 服务
在hadoop001上启动 Hiveserver2 服务,具体命令如下:
bin/hiveserver2
执行完上述命令后,在hadoop001服务器上就已经启动了 Hive 服务,当前的命令窗口没有任何反应,无法执行其他操作,如下图所示:
此时,可以使用 SecureCRT 软件的克隆会话功能(右击会话窗口,单击 Clone Session 选项)打开新的 hadoop001会话窗口,使用 Jps命令可以查看 Hive 服务启动情况,如下图所示。
在 hadoop002服务器的 Hive安装包下,通过远程连接命令 bin/beeline 进行连接,并且输入连接协议,然后根据提示输入 Hive 服务器的用户名和密码,即可连接到 Hive 服务,具体指令如下:
//输入远程连接命令
bin/beeline
//输入远程连接协议,连接到指定 Hive 服务 (hadoop001)的主机名和端口(默认为10000)
beeline>! connect jdbc:hive2://hadoop001:10000
//输入连接 Hive 服务器的用户名和密码
Enter username for jdbc:hive2://hadoop001:10000: root
Enter password for jdbc:hive2://hadoop001:10000:
5)测试
在hadoop002服务器执行 show databases后,可以成功显示数据仓库的列表信息,说明远程连接 Hive 成功。
小提示:在连接 Hive 数据仓库进行相关操作时,会使用到数据库(如MySQL),还会依赖 MapReduce 进行数据处理,所以在进行 Hive 连接前,必须保证 Hadoop 集群以及第三方数据库 MySQL 已经启动,否则,在连接过程中会出现拒绝连接的错误提示。