赞
踩
Hive 的安装模式分为3种,分别是嵌入模式、本地模式和远程模式。下面针对这3种模式进行介绍。
(1)嵌入模式:使用内嵌的Derby数据库存储元数据,这种方式是Hive的默认安装方式,配置简单,但是一次只能连接一个客户端,适合用来测试,不适合生产环境。
(2)本地模式:采用外部数据库存储元数据,该模式不需要单独开启 Metastore服务,因为本地模式使用的是和 Hive在同一个进程中的Metastore服务。
(3)远程模式:与本地模式一样,远程模式也是采用外部数据库存储元数据。不同的是,远程模式需要单独开启 Metastore服务,然后每个客户端都在配置文件中配置连接该Metastore 服务。远程模式中,Metastore 服务和 Hive 运行在不同的进程中。
本地和远程模式安装配置方式大致相同,本质上是将Hive默认的元数据存储介质由自带的Derby数据库替换为MySQL数据库。
MySQL前面已经安装过了。这里不在赘述。
下载地址:https://dlcdn.apache.org/hive/
将hive安装包解压到/export/servers/目录下
tar zvxf apache-hive-3.1.2-bin.tar.gz -C /export/servers/
把hadoop安装包下的guava复制到删除的文件目录下
cp guava-27.0-jre.jar /export/servers/apache-hive-3.1.2-bin/lib/
由于 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>
由于使用的是MySQL数据库,那么就需要上传MySQL连接驱动的 jar 包到 Hive 安装包lib文件夹下。
bin/schematool -initSchema -dbType mysql -verbose
初始化成功会在mysql中自动创建hive数据库和74张表
Hive CLI是Hive的交互工具,下面演示几种 CLI 的使用。
#<HIVE_HOME>/bin/hive
hive> exit;
hive> quit;
hive> show tables;
hive> show functions;
hive> !clear;
由于使用CLI连接方式不能进行多个节点的同时访问,而且会造成服务器阻塞,且出于对服务器安全性的考虑, Hive服务所部署的服务器通常用户是无法直接访问的,因此,必须选用远程服务启动模式,具体启动步骤如下。
首先,将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/
<!-- 配置访问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/
在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:
在hadoop002服务器执行 show databases后,可以成功显示数据仓库的列表信息,说明远程连接 Hive 成功。
小提示:在连接 Hive 数据仓库进行相关操作时,会使用到数据库(如MySQL),还会依赖 MapReduce 进行数据处理,所以在进行 Hive 连接前,必须保证 Hadoop 集群以及第三方数据库 MySQL 已经启动,否则,在连接过程中会出现拒绝连接的错误提示。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。