当前位置: 首页 > article >正文

Hive 安装部署

文章目录

  • Hive 安装部署
    • 部署模式
    • 嵌入模式安装
      • 下载安装
      • 配置环境
      • 启动 Hive 客户端工具
    • 本地模式安装
      • 下载安装 MySQL
      • 登录 MySQL
      • 安装 Hive
    • Hive 命令行交互

Hive 安装部署

部署模式

Hive 有3种部署模式,分别是嵌入模式、本地模式和远程模式。关于这 3 种部署模式的具体介绍如下。

(1)嵌入模式:使用内嵌的 Derby 数据库存储元数据,这是 Hive 最简单的部署方式在嵌入模式下运行 Hive 时,会在当前目录下生成元数据文件,只能有一个 Hive 客户端使用该目录下的元数据文件,这就意味着嵌入模式下的 Hive 不支持多会话连接,并且不同目录的元数据文件无法共享,因此不适合生产环境,只适合测试环境。

(2)本地模式:使用独立数据库(MySQL)存储元数据,Hive 客户端和 Metastore 服务在同一台服务器中启动,Hive 客户端通过连接本地的 Metastore 服务获取元数据信息。本地模式支持元数据共享,并且支持本地多会话连接。

(3)远程模式:与本地模式一样都是使用独立数据库(MySQL)存储元数据,不同的是 Hive 客户端和 Metastore 服务在不同的服务器启动,Hive 客户端通过远程连接 Metastore 服务获取元数据信息。远程模式同样支持元数据共享,并且支持远程多会话连接。

嵌入模式安装

下载安装

链接:http://archive.apache.org/dist/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz
使用 MobaXterm 远程连接工具连接虚拟机,将安装包放在用户 user 根目录的software目录下,下载完成后,解压缩并重命名。

[user@hadoop102 software]$ tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /opt/ 
[user@hadoop102 software]$ cd /opt/
[user@hadoop102 opt]$ mv apache-hive-2.3.9-bin hive-2.3.9

配置环境

修改/etc/profile文件配置Hive环境变量。

[user@hadoop102 opt]$ sudo vim /etc/profile.d/hive.sh
添加内容如下:
export HIVE_HOME=/opt/hive-2.3.9
export PATH=:$HIVE_HOME/bin:$PATH

加载修改后的环境变量配置

[user@hadoop102 opt]$ source /etc/profile

在启动Hive之前需要在Hive的安装目录下进行初始化Derby数据库的操作,具体命令如下。

[user@hadoop102 opt]$ cd hive-2.3.9
[user@hadoop102 hive-2.3.9]$ bin/schematool -initSchema -dbType derb

​ 执行上述命令后,若出现 schemaTool completed 信息,则证明成功初始化 Derby 数据库。

启动 Hive 客户端工具

​ 执行“hive”命令启动 Hive 客户端工具 HiveCLI。

​ 可以执行“quit;”命令退出Hive客户端工具HiveCLI,此时在Hive 安装目录下会默认生成文件derby.log和文件夹metastore_db,其中文件 derby.log用于记录Derby数据库日志信息;文件夹metastore_db存储Derby数据库元数据。

本地模式安装

​ 本地模式部署本质上是将 Hive 默认的元数据存储介质由内嵌的 Derby 数据库替换为独立数据库,即 MySQL 数据库。这样,无论在任何目录下通过 Hive 客户端工具,访问的元数 据信息是一致的,并且可以实现多个用户同时访问,从而实现元数据的共享。

​ 本地模式部署 Hive 需要在一台虚拟机上同时安装 MySQL 和 Hive,这里以虚拟机为例, 详细讲解如何使用本地模式部署 Hive,具体操作步骤如下

下载安装 MySQL

下载链接如下:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.40-1.el7.x86_64.rpm-bundle.tar

将安装包放在用户user根目录的software目录下,下载完成后,解压,使用yum安装下面几个rpm包,具体命令如下:

sudo rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm

若出现以下错误:

错误:依赖检测失败:
  mysql-community-libs(x86-64) >= 5.7.9(已安裝) mysql-community-libs-compat-5.7.40-1.el7.x86_64 需要
  mysql-community-libs(x86-64) >= 5.7.9(已安裝) mysql-community-client-5.7.40-1.el7.x86_64 需要

解决方案:清除之前安装过的依赖命令如下:

[user@hadoop102 ~]$ sudo yum remove mysql-libs

MySQL安装完成后,执行systemctl start mysqld命令启动MySQL服务,待 MySQL服务启动完成后,执行systemctl status mysqld查看MySQL 服务运行状态,MySQL 服务运行状态信息中出现 active(running)信息,说明MySQL 服务处于运行状态。

登录 MySQL

​ MySQL安装完成后需要通过用户名和密码进行登录,MySQL为本地默认用户root自动生成密码,可以在MySQL的日志文件中查看此密码,具体命令如下。

[user@hadoop102 ~]$ grep "password" /var/log/mysqld.log

执行上述命令后,在返回的信息中查看MySQL中本地默认用户root的密码。

​接下来,执行“mysql -uroot -p”命令以root身份登录 MySQL,在弹出的“Enter password:”信息处输入密码,从而登录 MySQL 进入命令行交互界面。

若出现下面错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 

解决方案:

1)停止 MySQL 服务

[user@hadoop102 ~]$ service mysqld stop

2)跳过验证:修改 MySQL 安装目录下的my.ini配置文件,使登录时跳过权限检查

[user@hadoop102 ~]$ sudo vim /etc/my.cnf
# 在my.ini,[mysqld]下添加一行,使其登录时跳过权限检查
skip-grant-tables

启动 MySQL 需要密码的话使用如下命令,假设密码为“123456”

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

修改后输入“flush privileges”刷新权限。

安装 Hive

我们在之前嵌入模式安装的 Hive 基础上,修改配置,完成本地模式的安装。

进入 Hive 安装目录下的 conf 目录,复制模板文件 hive-env.sh.template 并重命名为hive-env.sh,文件 hive-env.sh 用于配置 Hive 运行环境,具体命令如下。

# 进入 Hive 安装目录下的 conf 目录
[user@hadoop102 ~]$ cd /opt/hive-2.3.9/conf/
# 将文件 hive-env.sh.template 进行复制并重命名为 hive-env.sh
[user@hadoop102 conf]$ cp hive-env.sh.template hive-env.sh

​ 添加环境变量,编辑文件hive-env.sh,命令如下:

[user@hadoop102 ~]$ vim /opt/hive-2.3.9/conf/hive-env.sh
添加如下环境变量:
# 指定 Hadoop 目录
export HADOOP_HOME=/opt/hadoop-2.7.7
# 指定 Hive 配置文件所在目录
export HIVE_CONF_DIR=/opt/hive-2.3.9/conf
# 指定 Hive 依赖包所在目录
export HIVE_AUX_JARS_PATH=/opt/hive-2.3.9/lib
# 指定 JDK 所在目录
export JAVA_HOME=/usr/java/default

​ 进入Hive安装目录下的conf目录,创建文件 hive-site.xml 用于配置 Hive 相关参数,具体命令如下:

# 进入 Hive 安装目录下的 conf 目录
[user@hadoop102 ~]$ cd /opt/hive-2.3.9/conf
# 创建文件 hive-site.xml
[user@hadoop102 conf]$ touch hive-site.xml

​ 执行“vim hive-site.xml”命令编辑文件 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.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>root</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false</value>
 </property>
 <property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
 </property>
 <property>
  <name>hive.metastore.schema.verification</name>
  <value>false</value>
 </property>
 <property>
  <name>datanucleus.schema.autoCreateAll</name>
  <value>true</value>
 </property>
 <property>
  <name>hive.cli.print.header</name>
  <value>true</value>
 </property>
 <property>
  <name>hive.cli.print.current.db</name>
  <value>true</value>
 </property>
 <property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value>
 </property>
</configuration>

​ 上述配置内容中的参数讲解如下。

  • hive.metastore.warehouse.dir:配置 Hive 数据存储在 HDFS 上的目录。
  • javax.jdo.option.ConnectionURL:配置 JDBC 连接地址。
  • javax.jdo.option.ConnectionDriverName:配置 JDBC 驱动。
  • javax.jdo.option.ConnectionUserName:配置连接 MySQL 的用户名。
  • javax.jdo.option.ConnectionPassword:配置连接 MySQL 的密码。
  • hive.metastore.schema.verification:Hive 元数据存储版本是否进行验证。
  • datanucleus.schema.autoCreateAll:当元数据库中必要的数据对象不存在时,是否自动创建。
  • hive.cli.print.header:配置在命令行界面(CLI)中显示表的列名。
  • hive.cli.print.current.db:配置在命令行界面(CLI)中显示当前数据库名称,只会在Hive 的客户端工具 HiveCLI 生效,在 Hive 的客户端工具 Beeline 中无效。

​ 下载 JDBC 连接 MySQL 的驱动包。

​ 下载地址:https://downloads.mysql.com/archives/c-j/。

​ 选择 mysql-connector-java-5.1.49.tar.gz,点击下载。

​ 解压缩后,将mysql-connector-java-5.1.49.jar文件上传至/opt/hive-2.3.9/lib目录中。在启动 Hive 之前需要执行schematool -initSchema -dbType mysql命令初始化MySQL,若初始化完成后出现 schemaTool completed 信息,则说明成功初始化 MySQL。

​ 执行 hive 命令启动 Hive客户端工具 HiveCLI。成功启动 Hive 客户端工具 HiveCLI 进入命令行界面,默认当前使用的数据库为default

Hive 命令行交互

​ 在虚拟机中执行hiveserver2命令启动HiveServer2服务,HiveServer2服务启动成功后,HiveServer2会进入监听状态,若要使用后台方式启动 HiveServer2 服务,则执行“hive --service hiveserver2 &”命令,需要注意的是,通过hiveserver2命令启动的 HiveServer2 服务,不能关闭当前窗口,否则会停止 HiveServer2 服务。若需要手动停止 HiveServer2 服务,可以通过按下组合键 Ctrl+C 实现。

​ 通过MobaXterm远程连接工具再开启一个虚拟机窗口,在新窗口中通过Hive客户端工具Beeline远程连接虚拟HiveServer2服务,具体命令如下。(这里用的是root用户,我的密码设置为1)

[user@hadoop102 ~]$ beeline -u jdbc:hive2://localhost:10000 -nroot -p1

​ 上述命令中,beeline 用于执行 beeline 命令;u、n、p 都是 beeline 命令的参数。其中,-u 用于指定 HiveServer2 地址;-n 则用于指定登录当前虚拟机操作系统的用户名;-p 则是系统用户的密码。成功连接 HiveServer2服务如图1-3所示。

​ 如果出现如下报错:

Could not open connection to the HS2 server. Please check the server URI and if the URI is correct, then ask the administrator to check the server status.
Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000: java.net.ConnectException: 拒绝连接 (Connection refused) (state=08S01,code=0)

​ 解决方案:

​ 1)在conf/hive-site.xml文件中加入以下配置:

<property>
	<name>hive.server2.enable.doAs</name>
	<value>false</value>
</property>

​ 如果还是出现报错那么:

​ 2)在Hadoop的etc/hadoop目录下core-site.xml文件中加入以下配置:

<property>
	<name>hadoop.proxyuser.user.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.user.groups</name>
	<value>*</value>
</property>

​ 上述配置内容中的参数讲解如下。

hadoop.proxyuser.$superuser.hosts配置该superUser允许通过代理访问的主机节点
hadoop.proxyuser.$superuser.groups配置该superUser允许代理的用户所属组

​ 对于每个superUser用户,hosts必须进行配置,而groups和users至少需要配置一个。

​ 这几个配置项的值都可以使用*来表示允许所有的主机/用户组/用户。

​ 如果还是没有解决:

​ 3)启动metastore服务,命令如下:

[user@hadoop102 ~]$ hive --service metastore

​ 我们打开jps查看进程,如果是不是两个RunJar,使用 kill 把所以 RunJar 的进程杀死,重新启动hiveserver2metastore服务,再查看jps进程刚好两个,再连接。

​ 如果还是没有连接上,看看HDFS,YARN,MySQL是不是有没启动的。

​ 启动命令:

[user@hadoop102 ~]$ start-dfs.sh
[user@hadoop102 ~]$ start-yarn.sh
[user@hadoop102 ~]$ service mysqld start

​ 如果还是连接不上去查看一下各个配置的格式有没有问题。

通过 Hive 客户端工具 Beeline 远程连接虚拟 HiveServer2 服务连接问题总结:

  1. HDFS,YARN启动没。

  2. MySQL启动没。

  3. hiveserver2服务启动没。

  4. metastore元数据启动没。

  5. conf/hive-site.xml文件配置没。

  6. conf/hive-env.sh的环境变量配置没。

  7. Hadoop的etc/hadoop目录下core-site.xml文件配置没。


http://www.kler.cn/a/155689.html

相关文章:

  • 实现 MVC 模式
  • 代码 RNN原理及手写复现
  • HTML之表单学习记录
  • 2411C++,C++26反射示例
  • 移动端【01】面试系统的MVVM重构实践
  • request爬虫库的小坑
  • (11_29)畅捷通的 Serverless 探索实践之路
  • [Java]轻松掌握JDK和CGlib代理的使用技巧,让你的Java程序性能更卓越!
  • C语言实战演练之贪吃蛇游戏
  • 【springboot】启动失败 Failed to start bean ‘webServerStartStop‘
  • Unity安装
  • Python生产者消费者模型
  • Zabbix 6.0 详细基础介绍
  • 充电桩新老国标兼容性分析
  • OpenCvSharp从入门到实践-(06)创建图像
  • 编译原理头歌实验:实验4《算符优先分析法设计与实现》(C语言版)
  • vue el-select封装及使用
  • Prefix-Tuning 论文概述
  • JAVA代码优化:记录日志
  • 使用AOS实现网页动画效果
  • 利用段落检索和生成模型进行开放域问答12.2
  • Spring Initial 脚手架国内镜像地址
  • C/C++学生选课/排课系统[2023-12-3]
  • 保育员个人简历精选7篇
  • C++笔试训练day_1
  • Linux网络之连接跟踪 conntrack