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.mzph.cn/news/194991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软件测试学习】—软件质量需求(四)

【软件测试学习】—软件质量需求&#xff08;四&#xff09; 1 软件质量需求的分类 软件质量需求用于确定测试目标。测试目标包括&#xff1a;功能、性能、界面、易用性、兼容性、安全性、可用性/可靠性、可维 护性、可扩展性等。功能以外统称非功能 2 功能  软件能做什么…

【JavaScript手撕代码】数组去重

利用Set function getUnRepeatArr(arr){return [...new Set(arr)] }利用filter function getUnRepeatArr(arr){return arr.filter((item, index) > {// 过滤的方法&#xff0c;如果说数组中最后一个元素的索引当前遍历到的元素的索引// 那么我们认为它是唯一的return arr.…

组网技术-交换机

交换机&#xff1a; 分类&#xff1a; 根据交换方式划分&#xff1a; 1.存储转发交换&#xff1a;交换机对输入的数据包先进行缓存、验证、碎片过滤&#xff0c;然后进行转发。 时延大&#xff0c;但是可以提供差错校验&#xff0c;并支持不同速度的输入、输出端口间的交换…

Python读取二进制文件:深入解析与技术实现

目录 一、引言 二、二进制文件的基础 1、二进制文件的组成 2、二进制文件的编码 三、Python读取二进制文件的方法 1、使用内置函数open() 2、使用numpy库 四、处理读取的二进制数据 1、解析数据 2. 转换数据类型 五、总结与展望 1、高效读取二进制文件 2、处理复杂…

ssm医药进出口交易系统源码和论文

ssm医药进出口交易系统源码和论文726 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构…

电源自动切换初识

【前提&#xff1a;这里以一般的单片机产品为例&#xff0c;使用3.3V的供电系统&#xff0c;常见的USB供电、外接电源设配器供电和电池供电】 一、经典二极管切换电路 这是最简单的电源切换电路&#xff1a;二极管并联&#xff0c;理论上支持无数个电源切换&#xff0c;缺点是…

C++基础 -36- 模板之模板函数

模板函数格式 template <class T> void allexchange(T a,T b) {T c;c*a;*a*b;*bc; }模板函数可以增强函数的通用性 举例说明&#xff0c;使用一个模板函数实现了两个的函数的功能 #include "iostream"using namespace std;void myexchangeint(int* a,int* …

C语言图书管理系统的代码,包括图书录入、查询、插入、修改和删除功能。

以下是一个简单的C语言图书管理系统的代码&#xff0c;包括图书录入、查询、插入、修改和删除功能。 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_BOOKS 100 // 最大图书数量 // 图书结构体 typedef struct { int id; //…

linux作业管理_jobs

4.2 作业管理 是指控制当前正在运行的进程的行为&#xff0c;也称为进程控制。 是shell的一个特性&#xff0c;使用户能在多个独立进程间进行切换。 例如&#xff0c;用户可以挂起一个正在运行的进程&#xff0c;稍后再恢复其运行。当用户使用vim编辑一个文本文件&#xff0c…

【Python百宝箱】《AI之道:自动化机器学习与智能决策的终极指南》

代码之梦&#xff1a;探索Python AI库的奇妙世界 前言 在当今数字时代&#xff0c;人工智能和自动机器学习已成为推动科技创新的关键力量。本文深入探讨了多个强大的Python库&#xff0c;涵盖了从自动化模型选择、特征工程到模型解释性的全方位工具&#xff0c;为读者提供了丰…

java TrueLicense实现 实现License授权许可和验证

文章目录 简述License 生成License 客户端部署 简述 可用于项目交付项目部署到甲方以及包括代码防止泄露&#xff0c;经常会出现公司内部代码被已离职人员在下家公司使用&#xff0c;底层代码的封装增加license部分&#xff0c;杜绝这块的问题。定期更换license文件可进行续期…

Blast使用

makeblastdb注意事项makeblastdb及blastn的使用使用Blast本地数据库获得PSSM特征矩阵BLAST Database error: No alias or index file found for protein database报错BLAST Database error: No alias or index file found for nucleotide database[db] in search path的可能原因…

Linux命令(141)之sar

linux命令之sar 1.sar介绍 linux命令sar是用来从各个方面对系统的活动进行监控报告&#xff0c;包括&#xff1a;CPU使用率&#xff0c;内存使用&#xff0c;磁盘I/O等 2.sar用法 sar [参数] [ <时间间隔> [ <次数> ] ] sar参数 参数说明-A显示系统所有资源设备…

python scipy.spatial.distance.pdist学习详记——(待完善)

1.Python scipy.spatial.distance.pdist用法及代码示例

分享81个节日PPT,总有一款适合您

分享81个节日PPT&#xff0c;总有一款适合您 81个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1V0feg5pZ8C1Szycy40CrUw?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

JDK8特性,Lambda,时间日期,接口增强,Optional,Stream流

目录 JDK8 Lambda 概述 特点 语法 几种基本的写法 方法的引用 几种常见方式 常见的函数式接口 Supplier 生产数据 Consumer 消费数据 Function Predicate LocalDate&LocalTime&LocalDateTime jdk7日期时间存在的问题 设计不合理 时间格式化和解析操作线…

二分类问题中评估模型的示例及释义:召准率、召回率等

1、评估参数定义 1.1、召准率&#xff08;Precision&#xff09; 召准率是衡量模型预测正类标签时的准确度的指标。它计算的是模型预测的正类中真正为正类的比例。换句话说&#xff0c;召准率表示在所有预测为正类的实例中&#xff0c;正确识别为正类的实例所占的比例。 其中…

07_注解与动态代理

注解 什么是注解 注解&#xff08;Annotation&#xff09;&#xff0c;就是 Java 代码里面的特殊标记&#xff0c;例如 Override、Test 等作用&#xff1a;让其他程序根据注解信息来决定怎么执行该程序注意&#xff1a;注解可以用在类上、构造器上、方法上、成员变量上、参数…

SQLserver通过字符串中间截取然后分组

当我们存的数据是json的时候可以全部取出在模糊查询但是有多个重复数据的时候就没办法准确的模糊出来这个时候我们就需要用的字符串截取 --创建函数create FUNCTION [dbo].[Fmax] (str varchar(50),start VARCHAR(50),length VARCHAR(50)) RETURNS varchar(max) AS BEGINDEC…

Spring MVC学习随笔-文件下载和上传(配置文件上传解析器multipartResolver)

学习视频&#xff1a;孙哥说SpringMVC&#xff1a;结合Thymeleaf&#xff0c;重塑你的MVC世界&#xff01;&#xff5c;前所未有的Web开发探索之旅 学习视频&#xff1a;【编程不良人】继spring之后快速入门springmvc,面对SpringMVC不用慌 六、SpringMVC 文件上传下载 6.1 文件…